diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/5_6_0/2851-updated-terminology-valueset-parallel-versions.yaml b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/5_6_0/2851-updated-terminology-valueset-parallel-versions.yaml new file mode 100644 index 00000000000..0ed0e3d4237 --- /dev/null +++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/5_6_0/2851-updated-terminology-valueset-parallel-versions.yaml @@ -0,0 +1,4 @@ +--- +type: add +issue: 2851 +title: "Allows to upload not-current version of LOINC ValueSet(s)." diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/BaseHapiFhirResourceDao.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/BaseHapiFhirResourceDao.java index d43a08cdde1..6b13d9c7da2 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/BaseHapiFhirResourceDao.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/BaseHapiFhirResourceDao.java @@ -169,7 +169,7 @@ public abstract class BaseHapiFhirResourceDao extends B @Autowired private IRequestPartitionHelperSvc myRequestPartitionHelperService; @Autowired - private HapiTransactionService myTransactionService; + protected HapiTransactionService myTransactionService; @Autowired private MatchUrlService myMatchUrlService; @Autowired @@ -221,7 +221,7 @@ public abstract class BaseHapiFhirResourceDao extends B /** * Called for FHIR create (POST) operations */ - private DaoMethodOutcome doCreateForPost(T theResource, String theIfNoneExist, boolean thePerformIndexing, TransactionDetails theTransactionDetails, RequestDetails theRequestDetails) { + protected DaoMethodOutcome doCreateForPost(T theResource, String theIfNoneExist, boolean thePerformIndexing, TransactionDetails theTransactionDetails, RequestDetails theRequestDetails) { if (theResource == null) { String msg = getContext().getLocalizer().getMessage(BaseHapiFhirResourceDao.class, "missingBody"); throw new InvalidRequestException(msg); diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/JpaPersistedResourceValidationSupport.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/JpaPersistedResourceValidationSupport.java index f1819cbbbb7..bb27591070a 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/JpaPersistedResourceValidationSupport.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/JpaPersistedResourceValidationSupport.java @@ -24,15 +24,21 @@ import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirVersionEnum; import ca.uhn.fhir.context.support.IValidationSupport; import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; +import ca.uhn.fhir.jpa.term.TermReadSvcUtil; +import ca.uhn.fhir.jpa.term.api.ITermReadSvc; +import ca.uhn.fhir.model.primitive.IdDt; import ca.uhn.fhir.rest.api.SortOrderEnum; import ca.uhn.fhir.rest.api.SortSpec; import ca.uhn.fhir.rest.api.server.IBundleProvider; import ca.uhn.fhir.rest.param.StringParam; import ca.uhn.fhir.rest.param.TokenParam; import ca.uhn.fhir.rest.param.UriParam; +import ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException; import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; import org.hl7.fhir.instance.model.api.IAnyResource; import org.hl7.fhir.instance.model.api.IBaseResource; @@ -41,6 +47,7 @@ import org.hl7.fhir.r4.model.IdType; import org.hl7.fhir.r4.model.ImplementationGuide; import org.hl7.fhir.r4.model.Questionnaire; import org.hl7.fhir.r4.model.StructureDefinition; +import org.hl7.fhir.r4.model.UriType; import org.hl7.fhir.r4.model.ValueSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,10 +58,13 @@ import javax.annotation.PostConstruct; import javax.transaction.Transactional; import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; import static org.apache.commons.lang3.StringUtils.isBlank; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_GENERIC_VALUESET_URL_PLUS_SLASH; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_LOW; /** * This class is a {@link IValidationSupport Validation support} module that loads @@ -71,6 +81,10 @@ public class JpaPersistedResourceValidationSupport implements IValidationSupport @Autowired private DaoRegistry myDaoRegistry; + + @Autowired + private ITermReadSvc myTermReadSvc; + private Class myCodeSystemType; private Class myStructureDefinitionType; private Class myValueSetType; @@ -92,14 +106,55 @@ public class JpaPersistedResourceValidationSupport implements IValidationSupport @Override public IBaseResource fetchCodeSystem(String theSystem) { + if (TermReadSvcUtil.isLoincNotGenericUnversionedCodeSystem(theSystem)) { + Optional currentCSOpt = getCodeSystemCurrentVersion(new UriType(theSystem)); + if (! currentCSOpt.isPresent()) { + ourLog.info("Couldn't find current version of CodeSystem: " + theSystem); + } + return currentCSOpt.orElse(null); + } + return fetchResource(myCodeSystemType, theSystem); } + /** + * Obtains the current version of a CodeSystem using the fact that the current + * version is always pointed by the ForcedId for the no-versioned CS + */ + private Optional getCodeSystemCurrentVersion(UriType theUrl) { + if (! theUrl.getValueAsString().contains(LOINC_LOW)) return Optional.empty(); + + return myTermReadSvc.readCodeSystemByForcedId(LOINC_LOW); + } + + @Override public IBaseResource fetchValueSet(String theSystem) { + if (TermReadSvcUtil.isLoincNotGenericUnversionedValueSet(theSystem)) { + Optional currentVSOpt = getValueSetCurrentVersion(new UriType(theSystem)); + return currentVSOpt.orElseThrow(() -> new ResourceNotFoundException( + "Unable to find current version of ValueSet for url: " + theSystem)); + } + return fetchResource(myValueSetType, theSystem); } + /** + * Obtains the current version of a ValueSet using the fact that the current + * version is always pointed by the ForcedId for the no-versioned VS + */ + private Optional getValueSetCurrentVersion(UriType theUrl) { + if (TermReadSvcUtil.mustReturnEmptyValueSet(theUrl.getValueAsString())) return Optional.empty(); + + String forcedId = theUrl.getValue().substring(LOINC_GENERIC_VALUESET_URL_PLUS_SLASH.length()); + if (StringUtils.isBlank(forcedId)) return Optional.empty(); + + IFhirResourceDao valueSetResourceDao = myDaoRegistry.getResourceDao(myValueSetType); + IBaseResource valueSet = valueSetResourceDao.read(new IdDt("ValueSet", forcedId)); + return Optional.ofNullable(valueSet); + } + + @Override public IBaseResource fetchStructureDefinition(String theUrl) { return fetchResource(myStructureDefinitionType, theUrl); diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/data/ITermValueSetDao.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/data/ITermValueSetDao.java index 2bb11d4f22a..fd5a5bc95ce 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/data/ITermValueSetDao.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/data/ITermValueSetDao.java @@ -47,6 +47,13 @@ public interface ITermValueSetDao extends JpaRepository { @Query(value="SELECT vs FROM TermValueSet vs INNER JOIN ResourceTable r ON r.myId = vs.myResourcePid WHERE vs.myUrl = :url ORDER BY r.myUpdated DESC") List findTermValueSetByUrl(Pageable thePage, @Param("url") String theUrl); + /** + * The current TermValueSet is not necessarily the last uploaded anymore, but the current VS resource + * is pointed by a specific ForcedId, so we locate current ValueSet as the one pointing to current VS resource + */ + @Query(value="SELECT vs FROM ForcedId f, TermValueSet vs where f.myForcedId = :forcedId and vs.myResource = f.myResource") + Optional findTermValueSetByForcedId(@Param("forcedId") String theForcedId); + @Query("SELECT vs FROM TermValueSet vs WHERE vs.myUrl = :url AND vs.myVersion IS NULL") Optional findTermValueSetByUrlAndNullVersion(@Param("url") String theUrl); diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoCodeSystemR4.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoCodeSystemR4.java index 37ec5745cf4..b639c026754 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoCodeSystemR4.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoCodeSystemR4.java @@ -25,6 +25,7 @@ import ca.uhn.fhir.context.support.IValidationSupport; import ca.uhn.fhir.context.support.IValidationSupport.CodeValidationResult; import ca.uhn.fhir.context.support.ValidationSupportContext; import ca.uhn.fhir.jpa.api.dao.IFhirResourceDaoCodeSystem; +import ca.uhn.fhir.jpa.api.model.DaoMethodOutcome; import ca.uhn.fhir.jpa.dao.BaseHapiFhirResourceDao; import ca.uhn.fhir.jpa.model.cross.IBasePersistedResource; import ca.uhn.fhir.jpa.model.entity.ResourceTable; @@ -46,13 +47,16 @@ import org.hl7.fhir.r4.model.Coding; import org.springframework.beans.factory.annotation.Autowired; import javax.annotation.Nonnull; +import java.security.InvalidParameterException; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; import static ca.uhn.fhir.jpa.dao.FhirResourceDaoValueSetDstu2.toStringOrNull; +import static org.apache.commons.lang3.StringUtils.isBlank; import static org.apache.commons.lang3.StringUtils.isNotBlank; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_LOW; public class FhirResourceDaoCodeSystemR4 extends BaseHapiFhirResourceDao implements IFhirResourceDaoCodeSystem { @@ -173,4 +177,17 @@ public class FhirResourceDaoCodeSystemR4 extends BaseHapiFhirResourceDao doCreateForPost(theResource, theIfNoneExist, thePerformIndexing, theTransactionDetails, theRequestDetails)); + } + } diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoValueSetR4.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoValueSetR4.java index 43226b5f2ff..82d2a97ccd4 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoValueSetR4.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoValueSetR4.java @@ -28,7 +28,6 @@ import ca.uhn.fhir.jpa.model.cross.IBasePersistedResource; import ca.uhn.fhir.jpa.model.entity.ResourceTable; import ca.uhn.fhir.rest.api.server.RequestDetails; import ca.uhn.fhir.rest.api.server.storage.TransactionDetails; -import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; import org.hl7.fhir.instance.model.api.IBaseResource; import org.hl7.fhir.instance.model.api.IIdType; import org.hl7.fhir.instance.model.api.IPrimitiveType; diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/r4/BaseJpaResourceProviderCodeSystemR4.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/r4/BaseJpaResourceProviderCodeSystemR4.java index f625387b47e..688a4284029 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/r4/BaseJpaResourceProviderCodeSystemR4.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/r4/BaseJpaResourceProviderCodeSystemR4.java @@ -1,9 +1,13 @@ package ca.uhn.fhir.jpa.provider.r4; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - +import ca.uhn.fhir.context.support.IValidationSupport; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDaoCodeSystem; +import ca.uhn.fhir.jpa.model.util.JpaConstants; +import ca.uhn.fhir.jpa.provider.BaseJpaResourceProviderValueSetDstu2; +import ca.uhn.fhir.rest.annotation.IdParam; +import ca.uhn.fhir.rest.annotation.Operation; +import ca.uhn.fhir.rest.annotation.OperationParam; +import ca.uhn.fhir.rest.api.server.RequestDetails; import org.hl7.fhir.r4.model.BooleanType; import org.hl7.fhir.r4.model.CodeSystem; import org.hl7.fhir.r4.model.CodeType; @@ -14,6 +18,9 @@ import org.hl7.fhir.r4.model.Parameters; import org.hl7.fhir.r4.model.StringType; import org.hl7.fhir.r4.model.UriType; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + /* * #%L * HAPI FHIR JPA Server @@ -34,15 +41,6 @@ import org.hl7.fhir.r4.model.UriType; * #L% */ -import ca.uhn.fhir.context.support.IValidationSupport; -import ca.uhn.fhir.jpa.api.dao.IFhirResourceDaoCodeSystem; -import ca.uhn.fhir.jpa.model.util.JpaConstants; -import ca.uhn.fhir.jpa.provider.BaseJpaResourceProviderValueSetDstu2; -import ca.uhn.fhir.rest.annotation.IdParam; -import ca.uhn.fhir.rest.annotation.Operation; -import ca.uhn.fhir.rest.annotation.OperationParam; -import ca.uhn.fhir.rest.api.server.RequestDetails; - public class BaseJpaResourceProviderCodeSystemR4 extends JpaResourceProviderR4 { /** diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/BaseTermReadSvcImpl.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/BaseTermReadSvcImpl.java index a66bf88efe9..5b185c5726d 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/BaseTermReadSvcImpl.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/BaseTermReadSvcImpl.java @@ -28,6 +28,7 @@ import ca.uhn.fhir.context.support.ValueSetExpansionOptions; import ca.uhn.fhir.jpa.api.config.DaoConfig; import ca.uhn.fhir.jpa.api.dao.DaoRegistry; import ca.uhn.fhir.jpa.api.dao.IDao; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; import ca.uhn.fhir.jpa.api.dao.IFhirResourceDaoCodeSystem; import ca.uhn.fhir.jpa.config.HibernatePropertiesProvider; import ca.uhn.fhir.jpa.dao.IFulltextSearchSvc; @@ -54,6 +55,7 @@ import ca.uhn.fhir.jpa.entity.TermConceptPropertyTypeEnum; import ca.uhn.fhir.jpa.entity.TermValueSet; import ca.uhn.fhir.jpa.entity.TermValueSetConcept; import ca.uhn.fhir.jpa.entity.TermValueSetPreExpansionStatusEnum; +import ca.uhn.fhir.jpa.model.entity.ForcedId; import ca.uhn.fhir.jpa.model.entity.ResourceTable; import ca.uhn.fhir.jpa.model.sched.HapiJob; import ca.uhn.fhir.jpa.model.sched.ISchedulerService; @@ -123,6 +125,7 @@ import org.quartz.JobExecutionContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionDefinition; @@ -138,6 +141,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.annotation.PostConstruct; import javax.persistence.EntityManager; +import javax.persistence.NonUniqueResultException; import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContextType; import javax.persistence.TypedQuery; @@ -157,6 +161,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -176,6 +181,8 @@ import static org.apache.commons.lang3.StringUtils.isNoneBlank; import static org.apache.commons.lang3.StringUtils.isNotBlank; import static org.apache.commons.lang3.StringUtils.lowerCase; import static org.apache.commons.lang3.StringUtils.startsWithIgnoreCase; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_GENERIC_VALUESET_URL_PLUS_SLASH; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_LOW; public abstract class BaseTermReadSvcImpl implements ITermReadSvc { public static final int DEFAULT_FETCH_SIZE = 250; @@ -196,7 +203,7 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { @Autowired protected ITermConceptDesignationDao myConceptDesignationDao; @Autowired - protected ITermValueSetDao myValueSetDao; + protected ITermValueSetDao myTermValueSetDao; @Autowired protected ITermValueSetConceptDao myValueSetConceptDao; @Autowired @@ -339,7 +346,7 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { public void deleteValueSetForResource(ResourceTable theResourceTable) { // Get existing entity so it can be deleted. - Optional optionalExistingTermValueSetById = myValueSetDao.findByResourcePid(theResourceTable.getId()); + Optional optionalExistingTermValueSetById = myTermValueSetDao.findByResourcePid(theResourceTable.getId()); if (optionalExistingTermValueSetById.isPresent()) { TermValueSet existingTermValueSet = optionalExistingTermValueSetById.get(); @@ -347,7 +354,7 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { ourLog.info("Deleting existing TermValueSet[{}] and its children...", existingTermValueSet.getId()); myValueSetConceptDesignationDao.deleteByTermValueSetId(existingTermValueSet.getId()); myValueSetConceptDao.deleteByTermValueSetId(existingTermValueSet.getId()); - myValueSetDao.deleteById(existingTermValueSet.getId()); + myTermValueSetDao.deleteById(existingTermValueSet.getId()); ourLog.info("Done deleting existing TermValueSet[{}] and its children.", existingTermValueSet.getId()); } } @@ -443,14 +450,9 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { Optional optionalTermValueSet; if (theValueSetToExpand.hasUrl()) { if (theValueSetToExpand.hasVersion()) { - optionalTermValueSet = myValueSetDao.findTermValueSetByUrlAndVersion(theValueSetToExpand.getUrl(), theValueSetToExpand.getVersion()); + optionalTermValueSet = myTermValueSetDao.findTermValueSetByUrlAndVersion(theValueSetToExpand.getUrl(), theValueSetToExpand.getVersion()); } else { - List termValueSets = myValueSetDao.findTermValueSetByUrl(PageRequest.of(0, 1), theValueSetToExpand.getUrl()); - if (termValueSets.size() > 0) { - optionalTermValueSet = Optional.of(termValueSets.get(0)); - } else { - optionalTermValueSet = Optional.empty(); - } + optionalTermValueSet = findCurrentTermValueSet(theValueSetToExpand.getUrl()); } } else { optionalTermValueSet = Optional.empty(); @@ -1455,7 +1457,7 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { @Override public boolean isValueSetPreExpandedForCodeValidation(ValueSet theValueSet) { ResourcePersistentId valueSetResourcePid = myConceptStorageSvc.getValueSetResourcePid(theValueSet.getIdElement()); - Optional optionalTermValueSet = myValueSetDao.findByResourcePid(valueSetResourcePid.getIdAsLong()); + Optional optionalTermValueSet = myTermValueSetDao.findByResourcePid(valueSetResourcePid.getIdAsLong()); if (!optionalTermValueSet.isPresent()) { ourLog.warn("ValueSet is not present in terminology tables. Will perform in-memory code validation. {}", getValueSetInfo(theValueSet)); @@ -1760,7 +1762,7 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { TermValueSet termValueSet = optionalTermValueSet.get(); termValueSet.setExpansionStatus(TermValueSetPreExpansionStatusEnum.EXPANSION_IN_PROGRESS); - return myValueSetDao.saveAndFlush(termValueSet); + return myTermValueSetDao.saveAndFlush(termValueSet); }); if (valueSetToExpand == null) { return; @@ -1769,18 +1771,18 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { // We have a ValueSet to pre-expand. try { ValueSet valueSet = txTemplate.execute(t -> { - TermValueSet refreshedValueSetToExpand = myValueSetDao.findById(valueSetToExpand.getId()).orElseThrow(() -> new IllegalStateException("Unknown VS ID: " + valueSetToExpand.getId())); + TermValueSet refreshedValueSetToExpand = myTermValueSetDao.findById(valueSetToExpand.getId()).orElseThrow(() -> new IllegalStateException("Unknown VS ID: " + valueSetToExpand.getId())); return getValueSetFromResourceTable(refreshedValueSetToExpand.getResource()); }); assert valueSet != null; - ValueSetConceptAccumulator accumulator = new ValueSetConceptAccumulator(valueSetToExpand, myValueSetDao, myValueSetConceptDao, myValueSetConceptDesignationDao); + ValueSetConceptAccumulator accumulator = new ValueSetConceptAccumulator(valueSetToExpand, myTermValueSetDao, myValueSetConceptDao, myValueSetConceptDesignationDao); expandValueSet(null, valueSet, accumulator); // We are done with this ValueSet. txTemplate.execute(t -> { valueSetToExpand.setExpansionStatus(TermValueSetPreExpansionStatusEnum.EXPANDED); - myValueSetDao.saveAndFlush(valueSetToExpand); + myTermValueSetDao.saveAndFlush(valueSetToExpand); return null; }); @@ -1790,7 +1792,7 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { ourLog.error("Failed to pre-expand ValueSet: " + e.getMessage(), e); txTemplate.execute(t -> { valueSetToExpand.setExpansionStatus(TermValueSetPreExpansionStatusEnum.FAILED_TO_EXPAND); - myValueSetDao.saveAndFlush(valueSetToExpand); + myTermValueSetDao.saveAndFlush(valueSetToExpand); return null; }); } @@ -1873,7 +1875,7 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { private Optional getNextTermValueSetNotExpanded() { Optional retVal = Optional.empty(); - Slice page = myValueSetDao.findByExpansionStatus(PageRequest.of(0, 1), TermValueSetPreExpansionStatusEnum.NOT_EXPANDED); + Slice page = myTermValueSetDao.findByExpansionStatus(PageRequest.of(0, 1), TermValueSetPreExpansionStatusEnum.NOT_EXPANDED); if (!page.getContent().isEmpty()) { retVal = Optional.of(page.getContent().get(0)); @@ -1914,13 +1916,13 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { String version = termValueSet.getVersion(); Optional optionalExistingTermValueSetByUrl; if (version != null) { - optionalExistingTermValueSetByUrl = myValueSetDao.findTermValueSetByUrlAndVersion(url, version); + optionalExistingTermValueSetByUrl = myTermValueSetDao.findTermValueSetByUrlAndVersion(url, version); } else { - optionalExistingTermValueSetByUrl = myValueSetDao.findTermValueSetByUrlAndNullVersion(url); + optionalExistingTermValueSetByUrl = myTermValueSetDao.findTermValueSetByUrlAndNullVersion(url); } if (!optionalExistingTermValueSetByUrl.isPresent()) { - myValueSetDao.save(termValueSet); + myTermValueSetDao.save(termValueSet); } else { TermValueSet existingTermValueSet = optionalExistingTermValueSetByUrl.get(); @@ -2037,7 +2039,7 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { }); } - + @Nullable private ConceptSubsumptionOutcome testForSubsumption(SearchSession theSearchSession, TermConcept theLeft, TermConcept theRight, ConceptSubsumptionOutcome theOutput) { List fetch = theSearchSession.search(TermConcept.class) @@ -2338,6 +2340,29 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { return codeSystemValidateCode(codeSystemUrl, theVersion, code, display); } + + /** + * When the search is for unversioned loinc system it uses the forcedId to obtain the current + * version, as it is not necessarily the last one anymore. + * For other cases it keeps on considering the last uploaded as the current + */ + @Override + public Optional findCurrentTermValueSet(String theUrl) { + if (TermReadSvcUtil.isLoincNotGenericUnversionedValueSet(theUrl)) { + if (TermReadSvcUtil.mustReturnEmptyValueSet(theUrl)) return Optional.empty(); + + String forcedId = theUrl.substring(LOINC_GENERIC_VALUESET_URL_PLUS_SLASH.length()); + if (StringUtils.isBlank(forcedId)) return Optional.empty(); + + return myTermValueSetDao.findTermValueSetByForcedId(forcedId); + } + + List termValueSetList = myTermValueSetDao.findTermValueSetByUrl(Pageable.ofSize(1), theUrl); + if (termValueSetList.isEmpty()) return Optional.empty(); + return Optional.of(termValueSetList.get(0)); + } + + @SuppressWarnings("unchecked") private CodeValidationResult codeSystemValidateCode(String theCodeSystemUrl, String theCodeSystemVersion, String theCode, String theDisplay) { @@ -2364,10 +2389,16 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { predicates.add(criteriaBuilder.equal(systemJoin.get("myCodeSystemUri"), theCodeSystemUrl)); } + // for loinc CodeSystem last version is not necessarily the current anymore, so if no version is present + // we need to query for the current, which is that which version is null if (isNoneBlank(theCodeSystemVersion)) { predicates.add(criteriaBuilder.equal(systemVersionJoin.get("myCodeSystemVersionId"), theCodeSystemVersion)); } else { - query.orderBy(criteriaBuilder.desc(root.get("myUpdated"))); + if (theCodeSystemUrl.toLowerCase(Locale.ROOT).contains(LOINC_LOW)) { + predicates.add(criteriaBuilder.isNull(systemVersionJoin.get("myCodeSystemVersionId"))); + } else { + query.orderBy(criteriaBuilder.desc(root.get("myUpdated"))); + } } Predicate outerPredicate = criteriaBuilder.and(predicates.toArray(new Predicate[0])); @@ -2489,7 +2520,26 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { // NOTE: return the designation when one of then is not specified. if (theReqLang == null || theStoredLang == null) return true; - + return theReqLang.equalsIgnoreCase(theStoredLang); } + + + @Override + public Optional readCodeSystemByForcedId(String theForcedId) { + @SuppressWarnings("unchecked") + List resultList = (List) myEntityManager.createQuery( + "select f.myResource from ForcedId f " + + "where f.myResourceType = 'CodeSystem' and f.myForcedId = '" + theForcedId + "'").getResultList(); + if (resultList.isEmpty()) return Optional.empty(); + + if (resultList.size() > 1) throw new NonUniqueResultException( + "More than one CodeSystem is pointed by forcedId: " + theForcedId + ". Was constraint " + + ForcedId.IDX_FORCEDID_TYPE_FID + " removed?"); + + IFhirResourceDao csDao = myDaoRegistry.getResourceDao("CodeSystem"); + IBaseResource cs = csDao.toResource(resultList.get(0), false); + return Optional.of(cs ); + } + } diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/TermCodeSystemStorageSvcImpl.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/TermCodeSystemStorageSvcImpl.java index 01a4acb5bd4..10b50bccab5 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/TermCodeSystemStorageSvcImpl.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/TermCodeSystemStorageSvcImpl.java @@ -86,7 +86,9 @@ import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; +import static org.apache.commons.lang3.StringUtils.isBlank; import static org.apache.commons.lang3.StringUtils.isNotBlank; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_LOW; public class TermCodeSystemStorageSvcImpl implements ITermCodeSystemStorageSvc { private static final Logger ourLog = LoggerFactory.getLogger(TermCodeSystemStorageSvcImpl.class); @@ -139,6 +141,9 @@ public class TermCodeSystemStorageSvcImpl implements ITermCodeSystemStorageSvc { CodeSystem codeSystemResource = new CodeSystem(); codeSystemResource.setUrl(theSystem); codeSystemResource.setContent(CodeSystem.CodeSystemContentMode.NOTPRESENT); + if (isBlank(codeSystemResource.getIdElement().getIdPart()) && theSystem.contains(LOINC_LOW)) { + codeSystemResource.setId(LOINC_LOW); + } myTerminologyVersionAdapterSvc.createOrUpdateCodeSystem(codeSystemResource); cs = myCodeSystemDao.findByCodeSystemUri(theSystem); @@ -470,10 +475,7 @@ public class TermCodeSystemStorageSvcImpl implements ITermCodeSystemStorageSvc { codeSystemToStore = myCodeSystemVersionDao.saveAndFlush(codeSystemToStore); } - // defaults to true - boolean isMakeVersionCurrent = theRequestDetails == null || - (boolean) theRequestDetails.getUserData().getOrDefault(MAKE_LOADING_VERSION_CURRENT, Boolean.TRUE); - + boolean isMakeVersionCurrent = ITermCodeSystemStorageSvc.isMakeVersionCurrent(theRequestDetails); if (isMakeVersionCurrent) { codeSystem.setCurrentVersion(codeSystemToStore); if (codeSystem.getPid() == null) { diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/TermReadSvcUtil.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/TermReadSvcUtil.java new file mode 100644 index 00000000000..d45872a048e --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/TermReadSvcUtil.java @@ -0,0 +1,62 @@ +package ca.uhn.fhir.jpa.term; + +/*- + * #%L + * HAPI FHIR JPA Server + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; +import org.apache.commons.lang3.StringUtils; + +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_GENERIC_VALUESET_URL; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_GENERIC_VALUESET_URL_PLUS_SLASH; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_LOW; + +public class TermReadSvcUtil { + + public static boolean mustReturnEmptyValueSet(String theUrl) { + if (! theUrl.startsWith(LOINC_GENERIC_VALUESET_URL)) return true; + + if (! theUrl.startsWith(LOINC_GENERIC_VALUESET_URL_PLUS_SLASH)) { + throw new InternalErrorException("Don't know how to extract ValueSet's ForcedId from url: " + theUrl); + } + + String forcedId = theUrl.substring(LOINC_GENERIC_VALUESET_URL_PLUS_SLASH.length()); + return StringUtils.isBlank(forcedId); + } + + + public static boolean isLoincNotGenericUnversionedValueSet(String theUrl) { + boolean isLoincCodeSystem = StringUtils.containsIgnoreCase(theUrl, LOINC_LOW); + boolean isNoVersion = ! theUrl.contains("|"); + boolean isNotLoincGenericValueSet = ! theUrl.equals(LOINC_GENERIC_VALUESET_URL); + + return isLoincCodeSystem && isNoVersion && isNotLoincGenericValueSet; + } + + + public static boolean isLoincNotGenericUnversionedCodeSystem(String theUrl) { + boolean isLoincCodeSystem = StringUtils.containsIgnoreCase(theUrl, LOINC_LOW); + boolean isNoVersion = ! theUrl.contains("|"); + + return isLoincCodeSystem && isNoVersion; + } + + + +} diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/TermVersionAdapterSvcR4.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/TermVersionAdapterSvcR4.java index be3cf92be7e..38fbbd7a6d4 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/TermVersionAdapterSvcR4.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/TermVersionAdapterSvcR4.java @@ -33,7 +33,10 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; +import java.security.InvalidParameterException; + import static org.apache.commons.lang3.StringUtils.isBlank; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_LOW; public class TermVersionAdapterSvcR4 extends BaseTermVersionAdapterSvcImpl implements ITermVersionAdapterSvc { private IFhirResourceDao myConceptMapResourceDao; @@ -63,6 +66,9 @@ public class TermVersionAdapterSvcR4 extends BaseTermVersionAdapterSvcImpl imple public IIdType createOrUpdateCodeSystem(org.hl7.fhir.r4.model.CodeSystem theCodeSystemResource, RequestDetails theRequestDetails) { validateCodeSystemForStorage(theCodeSystemResource); if (isBlank(theCodeSystemResource.getIdElement().getIdPart())) { + if (theCodeSystemResource.getUrl().contains(LOINC_LOW)) { + throw new InvalidParameterException("'loinc' CodeSystem must have an 'ID' element"); + } String matchUrl = "CodeSystem?url=" + UrlUtil.escapeUrlParam(theCodeSystemResource.getUrl()); return myCodeSystemResourceDao.update(theCodeSystemResource, matchUrl, theRequestDetails).getId(); } else { diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/api/ITermCodeSystemStorageSvc.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/api/ITermCodeSystemStorageSvc.java index 2c62f3d05b9..1f85e823720 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/api/ITermCodeSystemStorageSvc.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/api/ITermCodeSystemStorageSvc.java @@ -40,7 +40,16 @@ import java.util.List; */ public interface ITermCodeSystemStorageSvc { - static final String MAKE_LOADING_VERSION_CURRENT = "make.loading.version.current"; + String MAKE_LOADING_VERSION_CURRENT = "make.loading.version.current"; + + + /** + * Defaults to true when parameter is null or entry is not present in requestDetails.myUserData + */ + static boolean isMakeVersionCurrent(RequestDetails theRequestDetails) { + return theRequestDetails == null || + (boolean) theRequestDetails.getUserData().getOrDefault(MAKE_LOADING_VERSION_CURRENT, Boolean.TRUE); + } void deleteCodeSystem(TermCodeSystem theCodeSystem); diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/api/ITermReadSvc.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/api/ITermReadSvc.java index 0f04f62bd8e..b02ffa30740 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/api/ITermReadSvc.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/api/ITermReadSvc.java @@ -4,10 +4,8 @@ import ca.uhn.fhir.context.support.ConceptValidationOptions; import ca.uhn.fhir.context.support.IValidationSupport; import ca.uhn.fhir.context.support.ValueSetExpansionOptions; import ca.uhn.fhir.jpa.api.dao.IFhirResourceDaoCodeSystem; -import ca.uhn.fhir.jpa.api.model.TranslationRequest; import ca.uhn.fhir.jpa.entity.TermConcept; -import ca.uhn.fhir.jpa.entity.TermConceptMapGroupElement; -import ca.uhn.fhir.jpa.entity.TermConceptMapGroupElementTarget; +import ca.uhn.fhir.jpa.entity.TermValueSet; import ca.uhn.fhir.jpa.model.entity.ResourceTable; import ca.uhn.fhir.jpa.term.IValueSetConceptAccumulator; import ca.uhn.fhir.util.FhirVersionIndependentConcept; @@ -17,7 +15,6 @@ import org.hl7.fhir.instance.model.api.IBaseResource; import org.hl7.fhir.instance.model.api.IIdType; import org.hl7.fhir.instance.model.api.IPrimitiveType; import org.hl7.fhir.r4.model.CodeSystem; -import org.hl7.fhir.r4.model.ConceptMap; import org.hl7.fhir.r4.model.ValueSet; import javax.annotation.Nonnull; @@ -119,4 +116,14 @@ public interface ITermReadSvc extends IValidationSupport { */ CodeValidationResult codeSystemValidateCode(IIdType theCodeSystemId, String theValueSetUrl, String theVersion, String theCode, String theDisplay, IBaseDatatype theCoding, IBaseDatatype theCodeableConcept); + /** + * Version independent + */ + Optional findCurrentTermValueSet(String theUrl); + + /** + * Version independent + */ + Optional readCodeSystemByForcedId(String theForcedId); + } diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/loinc/LoincUploadPropertiesEnum.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/loinc/LoincUploadPropertiesEnum.java index 8e2f26f5490..20ebb162a05 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/loinc/LoincUploadPropertiesEnum.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/loinc/LoincUploadPropertiesEnum.java @@ -33,6 +33,7 @@ public enum LoincUploadPropertiesEnum { */ LOINC_UPLOAD_PROPERTIES_FILE("loincupload.properties"), + LOINC_XML_FILE("loinc.xml"), /* * MANDATORY diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/JpaPersistedResourceValidationSupportTest.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/JpaPersistedResourceValidationSupportTest.java new file mode 100644 index 00000000000..8be940c8dae --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/JpaPersistedResourceValidationSupportTest.java @@ -0,0 +1,124 @@ +package ca.uhn.fhir.jpa.dao; + +/*- + * #%L + * HAPI FHIR JPA Server + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.context.support.IValidationSupport; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import ca.uhn.fhir.jpa.term.api.ITermReadSvc; +import ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException; +import com.github.benmanes.caffeine.cache.Cache; +import org.hl7.fhir.instance.model.api.IBaseResource; +import org.hl7.fhir.r4.model.CodeSystem; +import org.hl7.fhir.r4.model.ValueSet; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.test.util.ReflectionTestUtils; + +import java.util.function.Function; + +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_LOW; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.isA; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +class JpaPersistedResourceValidationSupportTest { + + private FhirContext theFhirContext = FhirContext.forR4(); + + @Mock private ITermReadSvc myTermReadSvc; + @Mock private DaoRegistry myDaoRegistry; + @Mock private Cache myLoadCache; + @Mock private IFhirResourceDao myValueSetResourceDao; + + @InjectMocks + private IValidationSupport testedClass = + new JpaPersistedResourceValidationSupport(theFhirContext); + + private Class myCodeSystemType = CodeSystem.class; + private Class myValueSetType = ValueSet.class; + + + @BeforeEach + public void setup() { + ReflectionTestUtils.setField(testedClass, "myValueSetType", myValueSetType); + } + + + @Nested + public class FetchCodeSystemTests { + + @Test + void fetchCodeSystemMustUseForcedId() { + testedClass.fetchCodeSystem("string-containing-loinc"); + + verify(myTermReadSvc, times(1)).readCodeSystemByForcedId(LOINC_LOW); + verify(myLoadCache, never()).get(anyString(), isA(Function.class)); + } + + + @Test + void fetchCodeSystemMustNotUseForcedId() { + testedClass.fetchCodeSystem("string-not-containing-l-o-i-n-c"); + + verify(myTermReadSvc, never()).readCodeSystemByForcedId(LOINC_LOW); + verify(myLoadCache, times(1)).get(anyString(), isA(Function.class)); + } + + } + + + @Nested + public class FetchValueSetTests { + + @Test + void fetchValueSetMustUseForcedId() { + final String valueSetId = "string-containing-loinc"; + ResourceNotFoundException thrown = assertThrows( + ResourceNotFoundException.class, + () -> testedClass.fetchValueSet(valueSetId)); + + assertTrue(thrown.getMessage().contains("Unable to find current version of ValueSet for url: " + valueSetId)); + } + + + @Test + void fetchValueSetMustNotUseForcedId() { + testedClass.fetchValueSet("string-not-containing-l-o-i-n-c"); + + verify(myLoadCache, times(1)).get(anyString(), isA(Function.class)); + } + + } + + +} diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoR4ValidateTest.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoR4ValidateTest.java index 9925ea61f49..ae1488533af 100644 --- a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoR4ValidateTest.java +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r4/FhirResourceDaoR4ValidateTest.java @@ -81,6 +81,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_LOW; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.fail; @@ -501,7 +502,8 @@ public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test { cs.setContent(CodeSystem.CodeSystemContentMode.COMPLETE); cs.setUrl("http://loinc.org"); cs.addConcept().setCode("123-4").setDisplay("Code 123 4"); - myCodeSystemDao.create(cs); + cs.setId(LOINC_LOW); + myCodeSystemDao.update(cs); Group group = new Group(); group.setId("ABC"); @@ -568,7 +570,8 @@ public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test { cs.setContent(CodeSystem.CodeSystemContentMode.COMPLETE); cs.setUrl("http://loinc.org"); cs.addConcept().setCode("123-4").setDisplay("Code 123 4"); - myCodeSystemDao.create(cs); + cs.setId(LOINC_LOW); + myCodeSystemDao.update(cs); Group group = new Group(); group.setId("ABC"); @@ -635,7 +638,8 @@ public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test { cs.setContent(CodeSystem.CodeSystemContentMode.COMPLETE); cs.setUrl("http://loinc.org"); cs.addConcept().setCode("123-4").setDisplay("Code 123 4"); - myCodeSystemDao.create(cs); + cs.setId(LOINC_LOW); + myCodeSystemDao.update(cs); Group group = new Group(); group.setId("ABC"); @@ -1710,7 +1714,8 @@ public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test { cs.setUrl(ITermLoaderSvc.LOINC_URI); cs.setContent(CodeSystem.CodeSystemContentMode.COMPLETE); cs.addConcept().setCode("10013-1"); - myCodeSystemDao.create(cs); + cs.setId(LOINC_LOW); + myCodeSystemDao.update(cs); IValidationSupport.CodeValidationResult result = myValueSetDao.validateCode(new UriType("http://fooVs"), null, new StringType("10013-1"), new StringType(ITermLoaderSvc.LOINC_URI), null, null, null, mySrd); diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r5/BaseJpaR5Test.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r5/BaseJpaR5Test.java index fa188add3af..0ab9e18c19c 100644 --- a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r5/BaseJpaR5Test.java +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r5/BaseJpaR5Test.java @@ -141,7 +141,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationContext; -import org.springframework.data.domain.Pageable; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.util.AopTestUtils; @@ -158,7 +157,7 @@ import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.Mockito.mock; @@ -569,9 +568,9 @@ public abstract class BaseJpaR5Test extends BaseJpaTest implements ITestDataBuil public List getExpandedConceptsByValueSetUrl(String theValuesetUrl) { return runInTransaction(() -> { - List valueSets = myTermValueSetDao.findTermValueSetByUrl(Pageable.unpaged(), theValuesetUrl); - assertEquals(1, valueSets.size()); - TermValueSet valueSet = valueSets.get(0); + Optional valueSetOpt = myTermSvc.findCurrentTermValueSet(theValuesetUrl); + assertTrue(valueSetOpt.isPresent()); + TermValueSet valueSet = valueSetOpt.get(); List concepts = valueSet.getConcepts(); return concepts.stream().map(concept -> concept.getCode()).collect(Collectors.toList()); }); diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/r4/BaseResourceProviderR4Test.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/r4/BaseResourceProviderR4Test.java index 760542e197f..d76b937e110 100644 --- a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/r4/BaseResourceProviderR4Test.java +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/provider/r4/BaseResourceProviderR4Test.java @@ -1,35 +1,5 @@ package ca.uhn.fhir.jpa.provider.r4; -import static org.apache.commons.lang3.StringUtils.isNotBlank; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.TimeUnit; - -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; -import org.hl7.fhir.r4.model.Bundle; -import org.hl7.fhir.r4.model.Bundle.BundleEntryComponent; -import org.hl7.fhir.r4.model.Parameters; -import org.hl7.fhir.r4.model.Parameters.ParametersParameterComponent; -import org.hl7.fhir.r4.model.Patient; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.context.ContextLoader; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.context.support.GenericWebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.servlet.DispatcherServlet; - import ca.uhn.fhir.context.support.IValidationSupport; import ca.uhn.fhir.jpa.api.dao.DaoRegistry; import ca.uhn.fhir.jpa.api.svc.ISearchCoordinatorSvc; @@ -56,6 +26,35 @@ import ca.uhn.fhir.rest.server.interceptor.ResponseHighlighterInterceptor; import ca.uhn.fhir.rest.server.provider.DeleteExpungeProvider; import ca.uhn.fhir.rest.server.provider.ReindexProvider; import ca.uhn.fhir.test.utilities.JettyUtil; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import org.hl7.fhir.r4.model.Bundle; +import org.hl7.fhir.r4.model.Bundle.BundleEntryComponent; +import org.hl7.fhir.r4.model.Parameters; +import org.hl7.fhir.r4.model.Parameters.ParametersParameterComponent; +import org.hl7.fhir.r4.model.Patient; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.context.ContextLoader; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.context.support.GenericWebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.servlet.DispatcherServlet; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import static org.apache.commons.lang3.StringUtils.isNotBlank; public abstract class BaseResourceProviderR4Test extends BaseJpaR4Test { diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TermVersionAdapterSvcR4Test.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TermVersionAdapterSvcR4Test.java new file mode 100644 index 00000000000..915ead7dcf1 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TermVersionAdapterSvcR4Test.java @@ -0,0 +1,78 @@ +package ca.uhn.fhir.jpa.term; + +/*- + * #%L + * HAPI FHIR JPA Server + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import ca.uhn.fhir.jpa.api.model.DaoMethodOutcome; +import ca.uhn.fhir.rest.server.servlet.ServletRequestDetails; +import org.hl7.fhir.r4.model.CodeSystem; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.test.util.ReflectionTestUtils; + +import java.security.InvalidParameterException; + +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_LOW; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + + +@ExtendWith(MockitoExtension.class) +class TermVersionAdapterSvcR4Test { + + private final TermVersionAdapterSvcR4 testedClass = new TermVersionAdapterSvcR4(); + + @Mock private IFhirResourceDao myCodeSystemResourceDao; + @Mock ServletRequestDetails theRequestDetails; + @Mock DaoMethodOutcome theDaoMethodOutcome; + + @Test + void createOrUpdateCodeSystemMustHaveId() { + CodeSystem codeSystem = new CodeSystem(); + codeSystem.setUrl("a-loinc-system"); + + InvalidParameterException thrown = assertThrows( + InvalidParameterException.class, + () -> testedClass.createOrUpdateCodeSystem(codeSystem, new ServletRequestDetails())); + + assertTrue(thrown.getMessage().contains("'loinc' CodeSystem must have an 'ID' element")); + } + + + @Test + void createOrUpdateCodeSystemWithIdNoException() { + ReflectionTestUtils.setField(testedClass, "myCodeSystemResourceDao", myCodeSystemResourceDao); + + CodeSystem codeSystem = new CodeSystem(); + codeSystem.setUrl("a-loinc-system").setId(LOINC_LOW); + + when(myCodeSystemResourceDao.update(codeSystem, theRequestDetails)).thenReturn(theDaoMethodOutcome); + + testedClass.createOrUpdateCodeSystem(codeSystem, theRequestDetails); + + verify(myCodeSystemResourceDao, Mockito.times(1)).update(codeSystem, theRequestDetails); + } +} diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TerminologyLoaderSvcLoincTest.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TerminologyLoaderSvcLoincTest.java index 23feac7194b..8d30f018d32 100644 --- a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TerminologyLoaderSvcLoincTest.java +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TerminologyLoaderSvcLoincTest.java @@ -25,7 +25,6 @@ import org.hl7.fhir.r4.model.CodeSystem; import org.hl7.fhir.r4.model.ConceptMap; import org.hl7.fhir.r4.model.Enumerations; import org.hl7.fhir.r4.model.ValueSet; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -75,6 +74,7 @@ import static org.hamcrest.Matchers.containsString; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.ArgumentMatchers.any; @@ -930,7 +930,7 @@ public class TerminologyLoaderSvcLoincTest extends BaseLoaderTest { testProps.put(LOINC_CODESYSTEM_MAKE_CURRENT.getCode(), "false"); doReturn(mockFileDescriptors).when(testedSvc).getLoadedFileDescriptors(mockFileDescriptorList); - InvalidRequestException thrown = Assertions.assertThrows(InvalidRequestException.class, + InvalidRequestException thrown = assertThrows(InvalidRequestException.class, () -> testedSvc.loadLoinc(mockFileDescriptorList, mySrd) ); assertEquals("'" + LOINC_CODESYSTEM_VERSION.getCode() + "' property is required when '" + diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TerminologySvcImplCurrentVersionR4Test.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TerminologySvcImplCurrentVersionR4Test.java new file mode 100644 index 00000000000..b34d1e008de --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TerminologySvcImplCurrentVersionR4Test.java @@ -0,0 +1,702 @@ +package ca.uhn.fhir.jpa.term; + +import ca.uhn.fhir.context.support.IValidationSupport; +import ca.uhn.fhir.context.support.ValidationSupportContext; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import ca.uhn.fhir.jpa.config.BaseConfig; +import ca.uhn.fhir.jpa.dao.r4.BaseJpaR4Test; +import ca.uhn.fhir.jpa.entity.TermCodeSystemVersion; +import ca.uhn.fhir.jpa.entity.TermConcept; +import ca.uhn.fhir.jpa.entity.TermValueSet; +import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; +import ca.uhn.fhir.jpa.term.api.ITermReadSvc; +import ca.uhn.fhir.rest.api.server.IBundleProvider; +import ca.uhn.fhir.rest.param.TokenParam; +import ca.uhn.fhir.rest.param.UriParam; +import ca.uhn.fhir.rest.server.servlet.ServletRequestDetails; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import org.apache.commons.lang3.StringUtils; +import org.hl7.fhir.instance.model.api.IBaseResource; +import org.hl7.fhir.instance.model.api.IIdType; +import org.hl7.fhir.r4.model.CodeSystem; +import org.hl7.fhir.r4.model.CodeType; +import org.hl7.fhir.r4.model.IdType; +import org.hl7.fhir.r4.model.StringType; +import org.hl7.fhir.r4.model.UriType; +import org.hl7.fhir.r4.model.ValueSet; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Answers; +import org.mockito.Mock; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.util.ResourceUtils; + +import javax.persistence.EntityManager; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Properties; +import java.util.Set; +import java.util.stream.Collectors; + +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_DUPLICATE_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_LINK_DUPLICATE_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_ANSWERLIST_LINK_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_CODESYSTEM_MAKE_CURRENT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_CODESYSTEM_VERSION; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_DOCUMENT_ONTOLOGY_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_DUPLICATE_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_GROUP_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_GROUP_TERMS_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_HIERARCHY_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_IEEE_MEDICAL_DEVICE_CODE_MAPPING_TABLE_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_IMAGING_DOCUMENT_CODES_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_PARENT_GROUP_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_PART_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_PART_LINK_FILE_PRIMARY_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_PART_LINK_FILE_SUPPLEMENTARY_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_PART_RELATED_CODE_MAPPING_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_RSNA_PLAYBOOK_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_TOP2000_COMMON_LAB_RESULTS_SI_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_TOP2000_COMMON_LAB_RESULTS_US_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_UNIVERSAL_LAB_ORDER_VALUESET_FILE_DEFAULT; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_UPLOAD_PROPERTIES_FILE; +import static ca.uhn.fhir.jpa.term.loinc.LoincUploadPropertiesEnum.LOINC_XML_FILE; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_LOW; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.Mockito.when; + +/** + * Tests load and validate CodeSystem and ValueSet so test names as uploadFirstCurrent... mean uploadCodeSystemAndValueSetCurrent... + */ +public class TerminologySvcImplCurrentVersionR4Test extends BaseJpaR4Test { + private static final Logger ourLog = LoggerFactory.getLogger(TerminologySvcImplCurrentVersionR4Test.class); + + public static final String BASE_LOINC_URL = "http://loinc.org"; + public static final String BASE_LOINC_VS_URL = BASE_LOINC_URL + "/vs/"; + + // some ValueSets have a version specified independent of the CS version being uploaded. This one doesn't + public static final String VS_NO_VERSIONED_ON_UPLOAD_ID = "loinc-rsna-radiology-playbook"; + public static final String VS_NO_VERSIONED_ON_UPLOAD = BASE_LOINC_VS_URL + VS_NO_VERSIONED_ON_UPLOAD_ID; + public static final String VS_NO_VERSIONED_ON_UPLOAD_FIRST_CODE = "17787-3"; + public static final String VS_NO_VERSIONED_ON_UPLOAD_FIRST_DISPLAY = "NM Thyroid gland Study report"; + + // some ValueSets have a version specified independent of the CS version being uploaded. This is one of them + public static final String VS_VERSIONED_ON_UPLOAD_ID = "LL1000-0"; + public static final String VS_VERSIONED_ON_UPLOAD = BASE_LOINC_VS_URL + VS_VERSIONED_ON_UPLOAD_ID; + public static final String VS_VERSIONED_ON_UPLOAD_FIRST_CODE = "LA13825-7"; + public static final String VS_VERSIONED_ON_UPLOAD_FIRST_DISPLAY = "1 slice or 1 dinner roll"; + + public static final String VS_ANSWER_LIST_VERSION = "Beta.1"; + public static final Set possibleVersions = Sets.newHashSet("2.67", "2.68", "2.69"); + + @Mock + private HttpServletResponse mockServletResponse; + + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private ServletRequestDetails mockRequestDetails; + + @Autowired + private EntityManager myEntityManager; + + @Autowired + private TermLoaderSvcImpl myTermLoaderSvc; + + @Autowired + private ITermReadSvc myITermReadSvc; + + @Autowired + @Qualifier(BaseConfig.JPA_VALIDATION_SUPPORT) + private IValidationSupport myJpaPersistedResourceValidationSupport; + + private ZipCollectionBuilder myFiles; + private ServletRequestDetails myRequestDetails = new ServletRequestDetails(); + + private Properties uploadProperties; + private IFhirResourceDao myValueSetIFhirResourceDao; + + + @BeforeEach + public void beforeEach() throws Exception { + File file = ResourceUtils.getFile("classpath:loinc-ver/" + LOINC_UPLOAD_PROPERTIES_FILE.getCode()); + uploadProperties = new Properties(); + uploadProperties.load(new FileInputStream(file)); + + myValueSetIFhirResourceDao = myDaoRegistry.getResourceDao(ValueSet.class); + + when(mockRequestDetails.getServer().getDefaultPageSize()).thenReturn(25); + } + + + /** + * For input version or for current (when input is null) validates search, expand, lookup and validateCode operations + */ + private void validateOperations(String currentVersion, Collection theExpectedVersions) { + validateValueSetSearch(theExpectedVersions); + + validateValueExpand(currentVersion, theExpectedVersions); + + validateValueLookup(currentVersion, theExpectedVersions); + + validateValidateCode(currentVersion, theExpectedVersions); + + // nothing to test for subsumes operation as it works only for concepts which share CodeSystem and version + } + + + private void validateValidateCode(String theCurrentVersion, Collection allVersions) { + IValidationSupport.CodeValidationResult resultNoVersioned = myCodeSystemDao.validateCode(null, + new UriType(BASE_LOINC_URL), null, new CodeType(VS_NO_VERSIONED_ON_UPLOAD_FIRST_CODE), + null, null, null, null); + assertNotNull(resultNoVersioned); + assertEquals(prefixWithVersion(theCurrentVersion, VS_NO_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), resultNoVersioned.getDisplay()); + + IValidationSupport.CodeValidationResult resultVersioned = myCodeSystemDao.validateCode(null, + new UriType(BASE_LOINC_URL), null, new CodeType(VS_VERSIONED_ON_UPLOAD_FIRST_CODE), + null, null, null, null); + assertNotNull(resultVersioned); + assertEquals(prefixWithVersion(theCurrentVersion, VS_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), resultVersioned.getDisplay()); + + allVersions.forEach(this::validateValidateCodeForVersion); + } + + + private void validateValidateCodeForVersion(String theVersion) { + IValidationSupport.CodeValidationResult resultNoVersioned = myCodeSystemDao.validateCode(null, + new UriType(BASE_LOINC_URL), new StringType(theVersion), new CodeType(VS_NO_VERSIONED_ON_UPLOAD_FIRST_CODE), + null, null, null, null); + assertNotNull(resultNoVersioned); + assertEquals(prefixWithVersion(theVersion, VS_NO_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), resultNoVersioned.getDisplay()); + + IValidationSupport.CodeValidationResult resultVersioned = myCodeSystemDao.validateCode(null, + new UriType(BASE_LOINC_URL), new StringType(theVersion), new CodeType(VS_VERSIONED_ON_UPLOAD_FIRST_CODE), + null, null, null, null); + assertNotNull(resultVersioned); + assertEquals(prefixWithVersion(theVersion, VS_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), resultVersioned.getDisplay()); + } + + + private void validateValueLookup(String theCurrentVersion, Collection allVersions) { + IValidationSupport.LookupCodeResult resultNoVer = myValidationSupport.lookupCode( + new ValidationSupportContext(myValidationSupport), BASE_LOINC_URL, VS_NO_VERSIONED_ON_UPLOAD_FIRST_CODE, null); + assertNotNull(resultNoVer); + String expectedNoVer = prefixWithVersion(theCurrentVersion, VS_NO_VERSIONED_ON_UPLOAD_FIRST_DISPLAY); + assertEquals(expectedNoVer, resultNoVer.getCodeDisplay()); + + IValidationSupport.LookupCodeResult resultWithVer = myValidationSupport.lookupCode( + new ValidationSupportContext(myValidationSupport), BASE_LOINC_URL, VS_VERSIONED_ON_UPLOAD_FIRST_CODE, null); + assertNotNull(resultWithVer); + String expectedWithVer = prefixWithVersion(theCurrentVersion, VS_VERSIONED_ON_UPLOAD_FIRST_DISPLAY); + assertEquals(expectedWithVer, resultWithVer.getCodeDisplay()); + + allVersions.forEach(this::lookupForVersion); + } + + + private void lookupForVersion(String theVersion) { + IValidationSupport.LookupCodeResult resultNoVer = myValidationSupport.lookupCode( + new ValidationSupportContext(myValidationSupport), BASE_LOINC_URL + "|" + theVersion, + VS_NO_VERSIONED_ON_UPLOAD_FIRST_CODE, null); + assertNotNull(resultNoVer); + String expectedNoVer = prefixWithVersion(theVersion, VS_NO_VERSIONED_ON_UPLOAD_FIRST_DISPLAY); + assertEquals(expectedNoVer, resultNoVer.getCodeDisplay()); + + IValidationSupport.LookupCodeResult resultWithVer = myValidationSupport.lookupCode( + new ValidationSupportContext(myValidationSupport), BASE_LOINC_URL + "|" + theVersion, + VS_VERSIONED_ON_UPLOAD_FIRST_CODE, null); + assertNotNull(resultWithVer); + String expectedWithVer = prefixWithVersion(theVersion, VS_VERSIONED_ON_UPLOAD_FIRST_DISPLAY); + assertEquals(expectedWithVer, resultWithVer.getCodeDisplay()); + } + + + private String prefixWithVersion(String version, String suffix) { + return (version == null ? "" : "v" + version + " ") + suffix; + + } + + private void validateValueExpand(String currentVersion, Collection theAllVersions) { + // for CS ver = null, VS ver = null + ValueSet vs = myValueSetDao.expandByIdentifier(VS_NO_VERSIONED_ON_UPLOAD, null); + assertEquals(1, vs.getExpansion().getContains().size()); + + // version was added prefixing code display to validate + assertEquals(prefixWithVersion(currentVersion, VS_NO_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), + vs.getExpansion().getContains().iterator().next().getDisplay()); + + + // for CS ver = null, VS ver != null + ValueSet vs1 = myValueSetDao.expandByIdentifier( + VS_VERSIONED_ON_UPLOAD + "|" + VS_ANSWER_LIST_VERSION, null); + assertEquals(3, vs1.getExpansion().getContains().size()); + + assertEquals(prefixWithVersion(currentVersion, VS_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), + vs1.getExpansion().getContains().iterator().next().getDisplay()); + + + validateExpandedTermConcepts(currentVersion, theAllVersions); + + // now for each uploaded version + theAllVersions.forEach(this::validateValueExpandForVersion); + } + + + private void validateExpandedTermConcepts(String theCurrentVersion, Collection theAllVersions) { + TermConcept termConceptNoVerCsvNoVer = (TermConcept) myEntityManager.createQuery( + "select tc from TermConcept tc join fetch tc.myCodeSystem tcsv where tc.myCode = '" + + VS_NO_VERSIONED_ON_UPLOAD_FIRST_CODE + "' and tcsv.myCodeSystemVersionId is null").getSingleResult(); + assertNotNull(termConceptNoVerCsvNoVer); + // data should have version because it was loaded with a version + assertEquals(prefixWithVersion(theCurrentVersion, VS_NO_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), termConceptNoVerCsvNoVer.getDisplay()); + + TermConcept termConceptVerCsvNoVer = (TermConcept) myEntityManager.createQuery( + "select tc from TermConcept tc join fetch tc.myCodeSystem tcsv where tc.myCode = '" + + VS_VERSIONED_ON_UPLOAD_FIRST_CODE + "' and tcsv.myCodeSystemVersionId is null").getSingleResult(); + assertNotNull(termConceptVerCsvNoVer); + // data should have version because it was loaded with a version + assertEquals(prefixWithVersion(theCurrentVersion, VS_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), termConceptVerCsvNoVer.getDisplay()); + + if (theCurrentVersion != null) { + TermConcept termConceptNoVerCsvVer = (TermConcept) myEntityManager.createQuery( + "select tc from TermConcept tc join fetch tc.myCodeSystem tcsv where tc.myCode = '" + + VS_NO_VERSIONED_ON_UPLOAD_FIRST_CODE + "' and tcsv.myCodeSystemVersionId = '" + theCurrentVersion + "'").getSingleResult(); + assertNotNull(termConceptNoVerCsvVer); + // data should have version because it was loaded with a version + assertEquals(prefixWithVersion(theCurrentVersion, VS_NO_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), termConceptNoVerCsvVer.getDisplay()); + + TermConcept termConceptVerCsvVer = (TermConcept) myEntityManager.createQuery( + "select tc from TermConcept tc join fetch tc.myCodeSystem tcsv where tc.myCode = '" + + VS_VERSIONED_ON_UPLOAD_FIRST_CODE + "' and tcsv.myCodeSystemVersionId = '" + theCurrentVersion + "'").getSingleResult(); + assertNotNull(termConceptVerCsvVer); + // data should have version because it was loaded with a version + assertEquals(prefixWithVersion(theCurrentVersion, VS_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), termConceptVerCsvVer.getDisplay()); + } + + + theAllVersions.forEach(this::validateExpandedTermConceptsForVersion); + } + + + private void validateExpandedTermConceptsForVersion(String theVersion) { + TermConcept termConceptNoVer = (TermConcept) myEntityManager.createQuery( + "select tc from TermConcept tc join fetch tc.myCodeSystem tcsv where tc.myCode = '" + + VS_NO_VERSIONED_ON_UPLOAD_FIRST_CODE + "' and tcsv.myCodeSystemVersionId = '" + theVersion + "'").getSingleResult(); + assertNotNull(termConceptNoVer); + assertEquals(prefixWithVersion(theVersion, VS_NO_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), termConceptNoVer.getDisplay()); + + TermConcept termConceptVer = (TermConcept) myEntityManager.createQuery( + "select tc from TermConcept tc join fetch tc.myCodeSystem tcsv where tc.myCode = '" + + VS_VERSIONED_ON_UPLOAD_FIRST_CODE + "' and tcsv.myCodeSystemVersionId = '" + theVersion + "'").getSingleResult(); + assertNotNull(termConceptVer); + assertEquals(prefixWithVersion(theVersion, VS_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), termConceptVer.getDisplay()); + } + + + private void validateValueExpandForVersion(String theVersion) { + // for CS ver != null, VS ver = null + + ValueSet vs2 = myValueSetDao.expandByIdentifier( + VS_NO_VERSIONED_ON_UPLOAD + "|" + theVersion, null); + assertEquals(1, vs2.getExpansion().getContains().size()); + + // version was added before code display to validate + assertEquals(prefixWithVersion(theVersion, VS_NO_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), + vs2.getExpansion().getContains().iterator().next().getDisplay()); + + + // for CS ver != null, VS ver != null + + ValueSet vs3 = myValueSetDao.expandByIdentifier( + VS_VERSIONED_ON_UPLOAD + "|" + VS_ANSWER_LIST_VERSION + "-" + theVersion, null); + assertEquals(3, vs3.getExpansion().getContains().size()); + + // version was added before code display to validate + assertEquals(prefixWithVersion(theVersion, VS_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), + vs3.getExpansion().getContains().iterator().next().getDisplay()); + } + + + private void validateValueSetSearch(Collection theExpectedIdVersions) { + // first validate search for CS ver = null VS ver = null + + SearchParameterMap paramsNoUploadVer = new SearchParameterMap("url", new UriParam(VS_NO_VERSIONED_ON_UPLOAD)); + int expectedResultQty = theExpectedIdVersions.size() + 1; // + 1 because an extra null version (the current) is always present + IBundleProvider noUploadVerResult = myValueSetIFhirResourceDao.search(paramsNoUploadVer, mockRequestDetails, mockServletResponse); + List noUploadVerValueSets = noUploadVerResult.getAllResources(); + assertEquals(expectedResultQty, noUploadVerValueSets.size()); + + matchUnqualifiedIds(noUploadVerValueSets, theExpectedIdVersions); + + // now validate search for CS ver = null VS ver != null + + SearchParameterMap paramsUploadVer = new SearchParameterMap("url", new UriParam(VS_VERSIONED_ON_UPLOAD)); + paramsUploadVer.add("version", new TokenParam(VS_ANSWER_LIST_VERSION)); + IBundleProvider uploadVerResult = myValueSetIFhirResourceDao.search(paramsUploadVer, mockRequestDetails, mockServletResponse); + List uploadVerValueSets = uploadVerResult.getAllResources(); + assertEquals(1, uploadVerValueSets.size()); + + assertEquals(VS_VERSIONED_ON_UPLOAD_ID, uploadVerValueSets.get(0).getIdElement().getIdPart()); + assertEquals(VS_ANSWER_LIST_VERSION, ((ValueSet) uploadVerValueSets.get(0)).getVersion()); + + // now validate each specific uploaded version + theExpectedIdVersions.forEach(this::validateValueSetSearchForVersion); + } + + + /** + * Some ValueSets (IE: AnswerLists), can have a specific version, different than the version of the + * CodeSystem with which they were uploaded. That version is what we distinguish in both sets of tests here, + * no the CodeSystem version. + */ + private void validateValueSetSearchForVersion(String theVersion) { + // for no versioned VS (VS version, different than CS version) + + SearchParameterMap paramsUploadNoVer = new SearchParameterMap("url", new UriParam(VS_NO_VERSIONED_ON_UPLOAD)); + paramsUploadNoVer.add("version", new TokenParam(theVersion)); + + IBundleProvider uploadNoVerResult = myValueSetIFhirResourceDao.search(paramsUploadNoVer, mockRequestDetails, mockServletResponse); + List uploadNoVerValueSets = uploadNoVerResult.getAllResources(); + assertEquals(1, uploadNoVerValueSets.size()); + + ValueSet loadNoVersionValueSet = (ValueSet) uploadNoVerValueSets.get(0); + String expectedLoadNoVersionUnqualifiedId = VS_NO_VERSIONED_ON_UPLOAD_ID + (theVersion == null ? "" : "-" + theVersion); + assertEquals(expectedLoadNoVersionUnqualifiedId, loadNoVersionValueSet.getIdElement().getIdPart()); + + + // versioned VS (VS version, different than CS version) + + SearchParameterMap paramsUploadVer = new SearchParameterMap("url", new UriParam(VS_VERSIONED_ON_UPLOAD)); + paramsUploadVer.add("version", new TokenParam(VS_ANSWER_LIST_VERSION + "-" + theVersion)); + + IBundleProvider uploadVerResult = myValueSetIFhirResourceDao.search(paramsUploadVer, mockRequestDetails, mockServletResponse); + List uploadVerValueSets = uploadVerResult.getAllResources(); + assertEquals(1, uploadVerValueSets.size()); + + ValueSet loadVersionValueSet = (ValueSet) uploadVerValueSets.get(0); + String expectedLoadVersionUnqualifiedId = VS_VERSIONED_ON_UPLOAD_ID + (theVersion == null ? "" : "-" + theVersion); + assertEquals(expectedLoadVersionUnqualifiedId, loadVersionValueSet.getIdElement().getIdPart()); + } + + + /** + * Validates that the collection of unqualified IDs of each element of theValueSets matches the expected + * unqualifiedIds corresponding to the uploaded versions plus one with no version + * + * @param theValueSets the ValueSet collection + * @param theExpectedIdVersions the collection of expected versions + */ + private void matchUnqualifiedIds(List theValueSets, Collection theExpectedIdVersions) { + // set should contain one entry per expectedVersion + List expectedNoVersionUnqualifiedIds = theExpectedIdVersions.stream() + .map(expVer -> VS_NO_VERSIONED_ON_UPLOAD_ID + "-" + expVer) + .collect(Collectors.toList()); + + // plus one entry for null version + expectedNoVersionUnqualifiedIds.add(VS_NO_VERSIONED_ON_UPLOAD_ID); + + List resultUnqualifiedIds = theValueSets.stream() + .map(r -> r.getIdElement().getIdPart()) + .collect(Collectors.toList()); + + assertThat(resultUnqualifiedIds, containsInAnyOrder(resultUnqualifiedIds.toArray())); + + Set theExpectedIdVersionsPlusNull = Sets.newHashSet(theExpectedIdVersions); + theExpectedIdVersionsPlusNull.add(null); + assertThat(theExpectedIdVersionsPlusNull, containsInAnyOrder( + theValueSets.stream().map(r -> ((ValueSet) r).getVersion()).toArray())); + + } + + + /** + * Validates that: + * for CodeSystem: + * _ current CS has no version + * _ current TCS has no version + * for ValueSet: + * _ current TVSs with upload version have upload-version with no version append + * _ current TVSs with no upload version have null version + */ + private void runCommonValidations(List theAllVersions) { + // for CodeSystem: + + // _ current CS is present and has no version + CodeSystem codeSystem = myCodeSystemDao.read(new IdType(LOINC_LOW)); + String csString = myFhirCtx.newJsonParser().setPrettyPrint(true).encodeResourceToString(codeSystem); + ourLog.info("CodeSystem:\n" + csString); + + HashSet shouldNotBePresentVersions = new HashSet<>(possibleVersions); + theAllVersions.forEach(shouldNotBePresentVersions::remove); + shouldNotBePresentVersions.forEach(vv -> assertFalse(csString.contains(vv), + "Found version string: '" + vv + "' in CodeSystem: " + csString)); + + // same reading it from term service + CodeSystem cs = myITermReadSvc.fetchCanonicalCodeSystemFromCompleteContext(BASE_LOINC_URL); + assertEquals(BASE_LOINC_URL, cs.getUrl()); + assertNull(cs.getVersion()); + + // _ current TermCodeSystem has no version + TermCodeSystemVersion termCSVersion = fetchCurrentCodeSystemVersion(); + assertNotNull(termCSVersion); + assertNull(termCSVersion.getCodeSystemVersionId()); + + // for ValueSet: + + // for ValueSet resource + ValueSet vs = (ValueSet) myJpaPersistedResourceValidationSupport.fetchValueSet(VS_NO_VERSIONED_ON_UPLOAD); + assertNotNull(vs); + assertEquals(VS_NO_VERSIONED_ON_UPLOAD, vs.getUrl()); + assertNull(vs.getVersion()); + + // current TermVSs with no upload version have null version + Optional noUploadCurrentVsOpt = myITermReadSvc.findCurrentTermValueSet(VS_NO_VERSIONED_ON_UPLOAD); + assertTrue(noUploadCurrentVsOpt.isPresent()); + assertNull(noUploadCurrentVsOpt.get().getVersion()); + + // current VSs with upload version have upload-version with no version append + Optional uploadCurrentVsOpt = myITermReadSvc.findCurrentTermValueSet(VS_VERSIONED_ON_UPLOAD); + assertTrue(uploadCurrentVsOpt.isPresent()); + assertEquals(VS_ANSWER_LIST_VERSION, uploadCurrentVsOpt.get().getVersion()); + + } + + + @Test() + public void uploadCurrentNoVersion() throws Exception { + IIdType csId = uploadLoincCodeSystem(null, true); + + runCommonValidations(Collections.emptyList()); + + // validate operation for current (no version parameter) + validateOperations(null, Collections.emptySet()); + + // tests conditions which were failing after VS expansion (before fix for issue-2995) + validateTermConcepts(Lists.newArrayList((String) null)); + } + + + @Test() + public void uploadWithVersion() throws Exception { + String ver = "2.67"; + IIdType csId = uploadLoincCodeSystem(ver, true); + + runCommonValidations(Collections.singletonList(ver)); + + // validate operation for specific version + validateOperations(ver, Collections.singleton(ver)); + + // tests conditions which were failing after VS expansion (before fix for issue-2995) + validateTermConcepts(Lists.newArrayList(ver, ver)); + } + + + + @Test + public void uploadNoVersionThenNoCurrent() throws Exception { + uploadLoincCodeSystem(null, true); + + String ver = "2.67"; + uploadLoincCodeSystem(ver, false); + +// myTermSvc.preExpandDeferredValueSetsToTerminologyTables(); + runCommonValidations(Collections.singletonList(ver)); + + // validate operation for specific version + validateOperations(null, Collections.singleton(ver)); + + // tests conditions which were failing after VS expansion (before fix for issue-2995) + validateTermConcepts(Lists.newArrayList(null, ver)); + } + + + @Test + public void uploadWithVersionThenNoCurrent() throws Exception { + String currentVer = "2.67"; + uploadLoincCodeSystem(currentVer, true); + + String nonCurrentVer = "2.68"; + uploadLoincCodeSystem(nonCurrentVer, false); + + // myTermSvc.preExpandDeferredValueSetsToTerminologyTables(); + + runCommonValidations(Lists.newArrayList(currentVer, nonCurrentVer)); + + // validate operation for specific version + validateOperations(currentVer, Lists.newArrayList(currentVer, nonCurrentVer)); + + // tests conditions which were failing after VS expansion (before fix for issue-2995) + validateTermConcepts(Lists.newArrayList(currentVer, currentVer, nonCurrentVer)); + } + + /** + * Validates TermConcepts were created in the sequence indicated by the parameters + * and their displays match the expected versions + */ + private void validateTermConcepts(ArrayList theExpectedVersions) { + @SuppressWarnings("unchecked") + List termConceptNoVerList = (List) myEntityManager.createQuery( + "from TermConcept where myCode = '" + VS_NO_VERSIONED_ON_UPLOAD_FIRST_CODE + "' order by myId").getResultList(); + assertEquals(theExpectedVersions.size(), termConceptNoVerList.size()); + for (int i = 0; i < theExpectedVersions.size(); i++) { + assertEquals( prefixWithVersion(theExpectedVersions.get(i), VS_NO_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), + termConceptNoVerList.get(i).getDisplay(), "TermCode with id: " + i + " display"); + } + + @SuppressWarnings("unchecked") + List termConceptWithVerList = (List) myEntityManager.createQuery( + "from TermConcept where myCode = '" + VS_VERSIONED_ON_UPLOAD_FIRST_CODE + "' order by myId").getResultList(); + assertEquals(theExpectedVersions.size(), termConceptWithVerList.size()); + for (int i = 0; i < theExpectedVersions.size(); i++) { + assertEquals( prefixWithVersion(theExpectedVersions.get(i), VS_VERSIONED_ON_UPLOAD_FIRST_DISPLAY), + termConceptWithVerList.get(i).getDisplay(), "TermCode with id: " + i + " display"); + } + } + + + @Test + public void uploadNoVersionThenNoCurrentThenCurrent() throws Exception { + uploadLoincCodeSystem(null, true); + + String nonCurrentVer = "2.67"; + uploadLoincCodeSystem(nonCurrentVer, false); + + String currentVer = "2.68"; + uploadLoincCodeSystem(currentVer, true); + + runCommonValidations(Lists.newArrayList(nonCurrentVer, currentVer)); + + // validate operation for specific version + validateOperations(currentVer, Lists.newArrayList(nonCurrentVer, currentVer)); + + // tests conditions which were failing after VS expansion (before fix for issue-2995) + validateTermConcepts(Lists.newArrayList(nonCurrentVer, currentVer, currentVer)); + } + + + @Test + public void uploadWithVersionThenNoCurrentThenCurrent() throws Exception { + String firstCurrentVer = "2.67"; + uploadLoincCodeSystem(firstCurrentVer, true); + + String noCurrentVer = "2.68"; + uploadLoincCodeSystem(noCurrentVer, false); + + String lastCurrentVer = "2.69"; + uploadLoincCodeSystem(lastCurrentVer, true); + + runCommonValidations(Lists.newArrayList(firstCurrentVer, noCurrentVer, lastCurrentVer)); + + // validate operation for specific version + validateOperations(lastCurrentVer, Lists.newArrayList(firstCurrentVer, noCurrentVer, lastCurrentVer)); + + // tests conditions which were failing after VS expansion (before fix for issue-2995) + validateTermConcepts(Lists.newArrayList(firstCurrentVer, noCurrentVer, lastCurrentVer, lastCurrentVer)); + } + + + + + private IIdType uploadLoincCodeSystem(String theVersion, boolean theMakeItCurrent) throws Exception { + myFiles = new ZipCollectionBuilder(); + + myRequestDetails.getUserData().put(LOINC_CODESYSTEM_MAKE_CURRENT, theMakeItCurrent); + uploadProperties.put(LOINC_CODESYSTEM_MAKE_CURRENT.getCode(), Boolean.toString(theMakeItCurrent)); + + assertTrue( + theVersion == null || theVersion.equals("2.67") || theVersion.equals("2.68") || theVersion.equals("2.69"), + "Version supported are: 2.67, 2.68, 2.69 and null" ); + + if (StringUtils.isBlank(theVersion)) { + uploadProperties.remove(LOINC_CODESYSTEM_VERSION.getCode()); + } else { + uploadProperties.put(LOINC_CODESYSTEM_VERSION.getCode(), theVersion); + } + + addLoincMandatoryFilesToZip(myFiles, theVersion); + + UploadStatistics stats = myTermLoaderSvc.loadLoinc(myFiles.getFiles(), mySrd); + myTerminologyDeferredStorageSvc.saveAllDeferred(); + + return stats.getTarget(); + } + + + public void addLoincMandatoryFilesToZip(ZipCollectionBuilder theFiles, String theVersion) throws IOException { + String theClassPathPrefix = getClassPathPrefix(theVersion); + addBaseLoincMandatoryFilesToZip(theFiles, true, theClassPathPrefix); + theFiles.addPropertiesZip(uploadProperties, LOINC_UPLOAD_PROPERTIES_FILE.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_PART_LINK_FILE_PRIMARY_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_PART_LINK_FILE_SUPPLEMENTARY_DEFAULT.getCode()); + } + + + private String getClassPathPrefix(String theVersion) { + String theClassPathPrefix = "/loinc-ver/v-no-version/"; + + if (StringUtils.isBlank(theVersion)) return theClassPathPrefix; + + switch(theVersion) { + case "2.67": return "/loinc-ver/v267/"; + case "2.68": return "/loinc-ver/v268/"; + case "2.69": return "/loinc-ver/v269/"; + } + + fail("Setup failed. Unexpected version: " + theVersion); + return null; + } + + + private static void addBaseLoincMandatoryFilesToZip( + ZipCollectionBuilder theFiles, Boolean theIncludeTop2000, String theClassPathPrefix) throws IOException { + theFiles.addFileZip(theClassPathPrefix, LOINC_XML_FILE.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_GROUP_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_GROUP_TERMS_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_PARENT_GROUP_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_DUPLICATE_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_HIERARCHY_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_ANSWERLIST_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_ANSWERLIST_DUPLICATE_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_ANSWERLIST_LINK_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_ANSWERLIST_LINK_DUPLICATE_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_PART_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_PART_RELATED_CODE_MAPPING_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_DOCUMENT_ONTOLOGY_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_RSNA_PLAYBOOK_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_UNIVERSAL_LAB_ORDER_VALUESET_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_IEEE_MEDICAL_DEVICE_CODE_MAPPING_TABLE_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_IMAGING_DOCUMENT_CODES_FILE_DEFAULT.getCode()); + if (theIncludeTop2000) { + theFiles.addFileZip(theClassPathPrefix, LOINC_TOP2000_COMMON_LAB_RESULTS_SI_FILE_DEFAULT.getCode()); + theFiles.addFileZip(theClassPathPrefix, LOINC_TOP2000_COMMON_LAB_RESULTS_US_FILE_DEFAULT.getCode()); + } + } + + private TermCodeSystemVersion fetchCurrentCodeSystemVersion() { + return (TermCodeSystemVersion) myEntityManager.createQuery( + "select tcsv from TermCodeSystemVersion tcsv join fetch tcsv.myCodeSystem tcs " + + "where tcs.myCurrentVersion = tcsv" ).getSingleResult(); + } + + +} diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TerminologySvcImplDstu3Test.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TerminologySvcImplDstu3Test.java index 5d29b99a1d4..34d94192a4c 100644 --- a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TerminologySvcImplDstu3Test.java +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/TerminologySvcImplDstu3Test.java @@ -42,6 +42,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.empty; +import static org.hl7.fhir.common.hapi.validation.support.ValidationConstants.LOINC_LOW; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertSame; @@ -406,7 +407,7 @@ public class TerminologySvcImplDstu3Test extends BaseJpaDstu3Test { .addFilter() .setProperty("copyright") .setOp(ValueSet.FilterOperator.EQUAL) - .setValue("loinc"); + .setValue(LOINC_LOW); outcome = myTermSvc.expandValueSet(null, vs); codes = toCodesContains(outcome.getExpansion().getContains()); assertThat(codes, containsInAnyOrder("47239-9")); @@ -478,7 +479,7 @@ public class TerminologySvcImplDstu3Test extends BaseJpaDstu3Test { .addFilter() .setProperty("copyright") .setOp(ValueSet.FilterOperator.EQUAL) - .setValue("loinc"); + .setValue(LOINC_LOW); outcome = myTermSvc.expandValueSet(null, vs); codes = toCodesContains(outcome.getExpansion().getContains()); assertThat(codes, containsInAnyOrder("50015-7", "43343-3", "43343-4")); diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/ZipCollectionBuilder.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/ZipCollectionBuilder.java index 026bd396e7d..1b887b37234 100644 --- a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/ZipCollectionBuilder.java +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/ZipCollectionBuilder.java @@ -13,11 +13,15 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import java.util.Properties; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZipCollectionBuilder { + public static final String ZIP_ENTRY_PREFIX = "SnomedCT_Release_INT_20160131_Full/Terminology/"; + + private static final Logger ourLog = LoggerFactory.getLogger(ZipCollectionBuilder.class); private final ArrayList myFiles; @@ -58,7 +62,7 @@ public class ZipCollectionBuilder { bos = new ByteArrayOutputStream(); ZipOutputStream zos = new ZipOutputStream(bos); ourLog.info("Adding {} to test zip", theClasspathFileName); - zos.putNextEntry(new ZipEntry("SnomedCT_Release_INT_20160131_Full/Terminology/" + theOutputFilename)); + zos.putNextEntry(new ZipEntry(ZIP_ENTRY_PREFIX + theOutputFilename)); zos.write(readFile(theClasspathPrefix, theClasspathFileName)); zos.closeEntry(); zos.close(); @@ -76,6 +80,36 @@ public class ZipCollectionBuilder { }); } + public void addPropertiesZip(Properties properties, String theOutputFilename) throws IOException { + + ByteArrayOutputStream bos; + bos = new ByteArrayOutputStream(); + ZipOutputStream zos = new ZipOutputStream(bos); + ourLog.info("Adding properties to test zip"); + zos.putNextEntry(new ZipEntry(ZIP_ENTRY_PREFIX + theOutputFilename)); + zos.write(getPropertiesBytes(properties)); + zos.closeEntry(); + zos.close(); + ourLog.info("ZIP file has {} bytes", bos.toByteArray().length); + myFiles.add(new ITermLoaderSvc.FileDescriptor() { + @Override + public String getFilename() { + return "AAA.zip"; + } + + @Override + public InputStream getInputStream() { + return new ByteArrayInputStream(bos.toByteArray()); + } + }); + } + + private byte[] getPropertiesBytes(Properties theProperties) throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + theProperties.store(byteArrayOutputStream, ""); + return byteArrayOutputStream.toByteArray(); + } + private byte[] readFile(String theClasspathPrefix, String theClasspathFileName) throws IOException { String classpathName = theClasspathPrefix + theClasspathFileName; InputStream stream = getClass().getResourceAsStream(classpathName); diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/api/ITermReadSvcTest.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/api/ITermReadSvcTest.java new file mode 100644 index 00000000000..c695bf8c0aa --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/api/ITermReadSvcTest.java @@ -0,0 +1,239 @@ +package ca.uhn.fhir.jpa.term.api; + +/*- + * #%L + * HAPI FHIR JPA Server + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import ca.uhn.fhir.jpa.dao.data.ITermValueSetDao; +import ca.uhn.fhir.jpa.model.entity.ResourceTable; +import ca.uhn.fhir.jpa.term.TermReadSvcR4; +import ca.uhn.fhir.jpa.term.TermReadSvcUtil; +import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; +import com.google.common.collect.Lists; +import org.hl7.fhir.instance.model.api.IBaseResource; +import org.hl7.fhir.r4.model.CodeSystem; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Answers; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.data.domain.Pageable; +import org.springframework.test.util.ReflectionTestUtils; + +import javax.persistence.EntityManager; +import javax.persistence.NonUniqueResultException; +import java.util.Collections; +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isA; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class ITermReadSvcTest { + + private final ITermReadSvc testedClass = new TermReadSvcR4(); + + @Mock private ITermValueSetDao myTermValueSetDao; + @Mock private DaoRegistry myDaoRegistry; + @Mock private IFhirResourceDao myFhirResourceDao; + + + @Nested + public class FindCurrentTermValueSet { + + @BeforeEach + public void setup() { + ReflectionTestUtils.setField(testedClass, "myTermValueSetDao", myTermValueSetDao); + } + + @Test + void forLoinc() { + String valueSetId = "a-loinc-value-set"; + testedClass.findCurrentTermValueSet("http://loinc.org/vs/" + valueSetId); + + verify(myTermValueSetDao, times(1)).findTermValueSetByForcedId(valueSetId); + verify(myTermValueSetDao, never()).findTermValueSetByUrl(isA(Pageable.class), anyString()); + } + + @Test + void forNotLoinc() { + String valueSetId = "not-a-loin-c-value-set"; + testedClass.findCurrentTermValueSet("http://not-loin-c.org/vs/" + valueSetId); + + verify(myTermValueSetDao, never()).findTermValueSetByForcedId(valueSetId); + verify(myTermValueSetDao, times(1)).findTermValueSetByUrl(isA(Pageable.class), anyString()); + } + } + + + @Nested + public class MustReturnEmptyValueSet { + + @Test + void doesntStartWithGenericVSReturnsTrue() { + boolean ret = TermReadSvcUtil.mustReturnEmptyValueSet("http://boing.org"); + assertTrue(ret); + } + + @Test + void doesntStartWithGenericVSPlusSlashThrows() { + InternalErrorException thrown = assertThrows( + InternalErrorException.class, + () -> TermReadSvcUtil.mustReturnEmptyValueSet("http://loinc.org/vs-no-slash-after-vs")); + + assertTrue(thrown.getMessage().contains("Don't know how to extract ValueSet's ForcedId from url:")); + } + + @Test + void blankVsIdReturnsTrue() { + boolean ret = TermReadSvcUtil.mustReturnEmptyValueSet("http://loinc.org/vs/"); + assertTrue(ret); + } + + @Test + void startsWithGenericPlusSlashPlusIdReturnsFalse() { + boolean ret = TermReadSvcUtil.mustReturnEmptyValueSet("http://loinc.org/vs/some-vs-id"); + assertFalse(ret); + } + + } + + + @Nested + public class IsLoincNotGenericUnversionedCodeSystem { + + @Test + void doesntContainLoincReturnsFalse() { + boolean ret = TermReadSvcUtil.isLoincNotGenericUnversionedCodeSystem("http://boing.org"); + assertFalse(ret); + } + + @Test + void hasVersionReturnsFalse() { + boolean ret = TermReadSvcUtil.isLoincNotGenericUnversionedCodeSystem("http://boing.org|v2.68"); + assertFalse(ret); + } + + @Test + void containsLoincAndNoVersionReturnsTrue() { + boolean ret = TermReadSvcUtil.isLoincNotGenericUnversionedCodeSystem("http://anything-plus-loinc.org"); + assertTrue(ret); + } + } + + @Nested + public class IsLoincNotGenericUnversionedValueSet { + + @Test + void notLoincReturnsFalse() { + boolean ret = TermReadSvcUtil.isLoincNotGenericUnversionedValueSet("http://anything-but-loin-c.org"); + assertFalse(ret); + } + + @Test + void isLoincAndHasVersionReturnsFalse() { + boolean ret = TermReadSvcUtil.isLoincNotGenericUnversionedValueSet("http://loinc.org|v2.67"); + assertFalse(ret); + } + + @Test + void isLoincNoVersionButEqualsGenericValueSetUrlReturnsFalse() { + boolean ret = TermReadSvcUtil.isLoincNotGenericUnversionedValueSet("http://loinc.org/vs"); + assertFalse(ret); + } + + @Test + void isLoincNoVersionStartsWithGenericValueSetPlusSlashPlusIdReturnsTrue() { + boolean ret = TermReadSvcUtil.isLoincNotGenericUnversionedValueSet("http://loinc.org/vs/vs-id"); + assertTrue(ret); + } + + } + + + @Nested + public class ReadByForcedId { + + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private EntityManager myEntityManager; + + @Mock private ResourceTable resource1; + @Mock private ResourceTable resource2; + @Mock private IBaseResource myCodeSystemResource; + + + @BeforeEach + public void setup() { + ReflectionTestUtils.setField(testedClass, "myEntityManager", myEntityManager); + } + + + @Test + void getNoneReturnsOptionalEmpty() { + when(myEntityManager.createQuery(anyString()).getResultList()) + .thenReturn(Collections.emptyList()); + + Optional result = testedClass.readCodeSystemByForcedId("a-cs-id"); + assertFalse(result.isPresent()); + } + + @Test + void getMultipleThrows() { + when(myEntityManager.createQuery(anyString()).getResultList()) + .thenReturn(Lists.newArrayList(resource1, resource2)); + + NonUniqueResultException thrown = assertThrows( + NonUniqueResultException.class, + () -> testedClass.readCodeSystemByForcedId("a-cs-id")); + + assertTrue(thrown.getMessage().contains("More than one CodeSystem is pointed by forcedId:")); + } + + @Test + void getOneConvertToResource() { + ReflectionTestUtils.setField(testedClass, "myDaoRegistry", myDaoRegistry); + + when(myEntityManager.createQuery(anyString()).getResultList()) + .thenReturn(Lists.newArrayList(resource1)); + when(myDaoRegistry.getResourceDao("CodeSystem")).thenReturn(myFhirResourceDao); + when(myFhirResourceDao.toResource(resource1, false)).thenReturn(myCodeSystemResource); + + + testedClass.readCodeSystemByForcedId("a-cs-id"); + + + verify(myFhirResourceDao, times(1)).toResource(any(), eq(false)); + } + + } + +} diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/loincupload.properties b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/loincupload.properties new file mode 100644 index 00000000000..3d36353cec0 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/loincupload.properties @@ -0,0 +1,93 @@ +################# +### MANDATORY ### +################# + +# Answer lists (ValueSets of potential answers/values for LOINC "questions") +## File must be present +loinc.answerlist.file=AccessoryFiles/AnswerFile/AnswerList.csv +# Answer list links (connects LOINC observation codes to answer list codes) +## File must be present +loinc.answerlist.link.file=AccessoryFiles/AnswerFile/LoincAnswerListLink.csv + +# Document ontology +## File must be present +loinc.document.ontology.file=AccessoryFiles/DocumentOntology/DocumentOntology.csv + +# LOINC codes +## File must be present +loinc.file=LoincTable/Loinc.csv + +# LOINC hierarchy +## File must be present +loinc.hierarchy.file=AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv + +# IEEE medical device codes +## File must be present +loinc.ieee.medical.device.code.mapping.table.file=AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv + +# Imaging document codes +## File must be present +loinc.imaging.document.codes.file=AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv + +# Part +## File must be present +loinc.part.file=AccessoryFiles/PartFile/Part.csv + +# Part link +## File must be present +loinc.part.link.primary.file=AccessoryFiles/PartFile/LoincPartLink_Primary.csv +loinc.part.link.supplementary.file=AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv + +# Part related code mapping +## File must be present +loinc.part.related.code.mapping.file=AccessoryFiles/PartFile/PartRelatedCodeMapping.csv + +# RSNA playbook +## File must be present +loinc.rsna.playbook.file=AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv + +# Top 2000 codes - SI +## File must be present +loinc.top2000.common.lab.results.si.file=AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv +# Top 2000 codes - US +## File must be present +loinc.top2000.common.lab.results.us.file=AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv + +# Universal lab order ValueSet +## File must be present +loinc.universal.lab.order.valueset.file=AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv + +################ +### OPTIONAL ### +################ + +# This is the version identifier for the answer list file +## Key may be omitted +loinc.answerlist.version=Beta.1 + +# This is the version identifier for uploaded ConceptMap resources +## Key may be omitted +loinc.conceptmap.version=Beta.1 + +# Group +## Default value if key not provided: AccessoryFiles/GroupFile/Group.csv +## File may be omitted +loinc.group.file=AccessoryFiles/GroupFile/Group.csv +# Group terms +## Default value if key not provided: AccessoryFiles/GroupFile/GroupLoincTerms.csv +## File may be omitted +loinc.group.terms.file=AccessoryFiles/GroupFile/GroupLoincTerms.csv +# Parent group +## Default value if key not provided: AccessoryFiles/GroupFile/ParentGroup.csv +## File may be omitted +loinc.parent.group.file=AccessoryFiles/GroupFile/ParentGroup.csv + +# Consumer Names +## Default value if key not provided: AccessoryFiles/ConsumerName/ConsumerName.csv +## File may be omitted +loinc.consumer.name.file=AccessoryFiles/ConsumerName/ConsumerName.csv + +# Linguistic Variants +## Default value if key not provided: AccessoryFiles/LinguisticVariants/LinguisticVariants.csv +## File may be omitted +loinc.linguistic.variants.file=AccessoryFiles/LinguisticVariants/LinguisticVariants.csv \ No newline at end of file diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/loincupload_singlepartlink.properties b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/loincupload_singlepartlink.properties new file mode 100644 index 00000000000..3164f533888 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/loincupload_singlepartlink.properties @@ -0,0 +1,82 @@ +################# +### MANDATORY ### +################# + +# Answer lists (ValueSets of potential answers/values for LOINC "questions") +## File must be present +loinc.answerlist.file=AccessoryFiles/AnswerFile/AnswerList.csv +# Answer list links (connects LOINC observation codes to answer list codes) +## File must be present +loinc.answerlist.link.file=AccessoryFiles/AnswerFile/LoincAnswerListLink.csv + +# Document ontology +## File must be present +loinc.document.ontology.file=AccessoryFiles/DocumentOntology/DocumentOntology.csv + +# LOINC codes +## File must be present +loinc.file=LoincTable/Loinc.csv + +# LOINC hierarchy +## File must be present +loinc.hierarchy.file=AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv + +# IEEE medical device codes +## File must be present +loinc.ieee.medical.device.code.mapping.table.file=AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv + +# Imaging document codes +## File must be present +loinc.imaging.document.codes.file=AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv + +# Part +## File must be present +loinc.part.file=AccessoryFiles/PartFile/Part.csv + +# Part link +## File must be present +loinc.part.link.file=AccessoryFiles/PartFile/LoincPartLink.csv + +# Part related code mapping +## File must be present +loinc.part.related.code.mapping.file=AccessoryFiles/PartFile/PartRelatedCodeMapping.csv + +# RSNA playbook +## File must be present +loinc.rsna.playbook.file=AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv + +# Top 2000 codes - SI +## File must be present +loinc.top2000.common.lab.results.si.file=AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv +# Top 2000 codes - US +## File must be present +loinc.top2000.common.lab.results.us.file=AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv + +# Universal lab order ValueSet +## File must be present +loinc.universal.lab.order.valueset.file=AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv + +################ +### OPTIONAL ### +################ + +# This is the version identifier for the answer list file +## Key may be omitted +loinc.answerlist.version=Beta.1 + +# This is the version identifier for uploaded ConceptMap resources +## Key may be omitted +loinc.conceptmap.version=Beta.1 + +# Group +## Default value if key not provided: AccessoryFiles/GroupFile/Group.csv +## File may be omitted +loinc.group.file=AccessoryFiles/GroupFile/Group.csv +# Group terms +## Default value if key not provided: AccessoryFiles/GroupFile/GroupLoincTerms.csv +## File may be omitted +loinc.group.terms.file=AccessoryFiles/GroupFile/GroupLoincTerms.csv +# Parent group +## Default value if key not provided: AccessoryFiles/GroupFile/ParentGroup.csv +## File may be omitted +loinc.parent.group.file=AccessoryFiles/GroupFile/ParentGroup.csv diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/AnswerFile/AnswerList.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/AnswerFile/AnswerList.csv new file mode 100644 index 00000000000..a448cf80f2d --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/AnswerFile/AnswerList.csv @@ -0,0 +1,12 @@ +"AnswerListId","AnswerListName" ,"AnswerListOID" ,"ExtDefinedYN","ExtDefinedAnswerListCodeSystem","ExtDefinedAnswerListLink" ,"AnswerStringId","LocalAnswerCode","LocalAnswerCodeSystem","SequenceNumber","DisplayText" ,"ExtCodeId","ExtCodeDisplayName" ,"ExtCodeSystem" ,"ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" ,"SubsequentTextPrompt","Description","Score" +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13825-7" ,"1" , ,1 ,"1 slice or 1 dinner roll" , , , , , , , , +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13838-0" ,"2" , ,2 ,"2 slices or 2 dinner rolls" , , , , , , , , +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13892-7" ,"3" , ,3 ,"More than 2 slices or 2 dinner rolls", , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA6270-8" ,"00" , ,1 ,"Never" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13836-4" ,"01" , ,2 ,"1-3 times per month" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13834-9" ,"02" , ,3 ,"1-2 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13853-9" ,"03" , ,4 ,"3-4 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13860-4" ,"04" , ,5 ,"5-6 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13827-3" ,"05" , ,6 ,"1 time per day" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA4389-8" ,"97" , ,11 ,"Refused" ,"443390004","Refused (qualifier value)","http://snomed.info/sct","http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College", , , +"LL1892-0" ,"ICD-9_ICD-10" ,"1.3.6.1.4.1.12009.10.1.1069","Y" , ,"http://www.cdc.gov/nchs/icd.htm", , , , , , , , , , , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv new file mode 100644 index 00000000000..820602c77ad --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv @@ -0,0 +1,11 @@ +"LoincNumber","LongCommonName" ,"AnswerListId","AnswerListName" ,"AnswerListLinkType","ApplicableContext" +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]","LL1000-0" ,"PhenX05_13_30D bread amt","NORMATIVE" , +"10061-0" ,"S' wave amplitude in lead I" ,"LL1311-1" ,"PhenX12_44" ,"EXAMPLE" , +"10331-7" ,"Rh [Type] in Blood" ,"LL360-9" ,"Pos|Neg" ,"EXAMPLE" , +"10389-5" ,"Blood product.other [Type]" ,"LL2413-4" ,"Othr bld prod" ,"EXAMPLE" , +"10390-3" ,"Blood product special preparation [Type]" ,"LL2422-5" ,"Blood prod treatment" ,"EXAMPLE" , +"10393-7" ,"Factor IX given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10395-2" ,"Factor VIII given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10401-8" ,"Immune serum globulin given [Type]" ,"LL2421-7" ,"IM/IV" ,"EXAMPLE" , +"10410-9" ,"Plasma given [Type]" ,"LL2417-5" ,"Plasma type" ,"EXAMPLE" , +"10568-4" ,"Clarity of Semen" ,"LL2427-4" ,"Clear/Opales/Milky" ,"EXAMPLE" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/ConsumerName/ConsumerName.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/ConsumerName/ConsumerName.csv new file mode 100644 index 00000000000..b4ec2907985 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/ConsumerName/ConsumerName.csv @@ -0,0 +1,6 @@ +"LoincNumber","ConsumerName" +"61438-8","Consumer Name 61438-8" +,"Consumer Name X" +47239-9","" +"17787-3","Consumer Name 17787-3" +"38699-5","1,1-Dichloroethane, Air" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/DocumentOntology/DocumentOntology.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/DocumentOntology/DocumentOntology.csv new file mode 100644 index 00000000000..f857d7f297b --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/DocumentOntology/DocumentOntology.csv @@ -0,0 +1,10 @@ +"LoincNumber","PartNumber","PartTypeName","PartSequenceOrder","PartName" +"11488-4","LP173418-7","Document.Kind","1","Note" +"11488-4","LP173110-0","Document.TypeOfService","1","Consultation" +"11488-4","LP173061-5","Document.Setting","1","{Setting}" +"11488-4","LP187187-2","Document.Role","1","{Role}" +"11490-0","LP173418-7","Document.Kind","1","Note" +"11490-0","LP173221-5","Document.TypeOfService","1","Discharge summary" +"11490-0","LP173061-5","Document.Setting","1","{Setting}" +"11490-0","LP173084-7","Document.Role","1","Physician" +"11492-6","LP173418-7","Document.Kind","1","Note" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/GroupFile/Group.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/GroupFile/Group.csv new file mode 100644 index 00000000000..66f5561ea1c --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/GroupFile/Group.csv @@ -0,0 +1,2 @@ +"ParentGroupId","GroupId","Group","Archetype","Status","VersionFirstReleased" +"LG100-4","LG1695-8","1,4-Dichlorobenzene|MCnc|Pt|ANYBldSerPl","","Active","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/GroupFile/GroupLoincTerms.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/GroupFile/GroupLoincTerms.csv new file mode 100644 index 00000000000..04c19759cfb --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/GroupFile/GroupLoincTerms.csv @@ -0,0 +1,3 @@ +"Category","GroupId","Archetype","LoincNumber","LongCommonName" +"Flowsheet","LG1695-8","","17424-3","1,4-Dichlorobenzene [Mass/volume] in Blood" +"Flowsheet","LG1695-8","","13006-2","1,4-Dichlorobenzene [Mass/volume] in Serum or Plasma" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/GroupFile/ParentGroup.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/GroupFile/ParentGroup.csv new file mode 100644 index 00000000000..734a86c43dd --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/GroupFile/ParentGroup.csv @@ -0,0 +1,2 @@ +"ParentGroupId","ParentGroup","Status" +"LG100-4","Chem_DrugTox_Chal_Sero_Allergy","ACTIVE" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv new file mode 100644 index 00000000000..a26397639ff --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv @@ -0,0 +1,10 @@ +"LOINC_NUM","LONG_COMMON_NAME" +"11525-3","US Pelvis Fetus for pregnancy" +"17787-3","NM Thyroid gland Study report" +"18744-3","Bronchoscopy study" +"18746-8","Colonoscopy study" +"18748-4","Diagnostic imaging study" +"18751-8","Endoscopy study" +"18753-4","Flexible sigmoidoscopy study" +"24531-6","US Retroperitoneum" +"24532-4","US Abdomen RUQ" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv new file mode 100644 index 00000000000..c79b3197490 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv @@ -0,0 +1,9 @@ +"ID","ISO_LANGUAGE","ISO_COUNTRY","LANGUAGE_NAME","PRODUCER" +"5","zh","CN","Chinese (CHINA)","Lin Zhang, A LOINC volunteer from China" +"7","es","AR","Spanish (ARGENTINA)","Conceptum Medical Terminology Center" +"8","fr","CA","French (CANADA)","Canada Health Infoway Inc." +,"de","AT","German (AUSTRIA)","ELGA, Austria" +"88",,"AT","German (AUSTRIA)","ELGA, Austria" +"89","de",,"German (AUSTRIA)","ELGA, Austria" +"90","de","AT",,"ELGA, Austria" +"24","de","AT","German (AUSTRIA)","ELGA, Austria" \ No newline at end of file diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv new file mode 100644 index 00000000000..c6882d47504 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv @@ -0,0 +1,4 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","Entlassungsbrief Ärztlich","Ergebnis","Zeitpunkt","{Setting}","Dokument","Dermatologie","DOC.ONTOLOGY","de shortname","de long common name","de related names 2","de linguistic variant display name" +"43730-1","","","","","","","","","","EBV-DNA qn. PCR","EBV-DNA quantitativ PCR" +"17787-3","","","","","","","","","","CoV OC43 RNA ql/SM P","Coronavirus OC43 RNA ql. /Sondermaterial PCR" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv new file mode 100644 index 00000000000..fa09e0cb242 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv @@ -0,0 +1,6 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif","Immunofluorescence","Sérologie","","","","" +"11704-4","Gliale nucléaire de type 1 , IgG","Titre","Temps ponctuel","LCR","Quantitatif","Immunofluorescence","Sérologie","","","","" +,"Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif",,,"","","","" +"17787-3","Virus respiratoire syncytial bovin","Présence-Seuil","Temps ponctuel","XXX","Ordinal","Culture spécifique à un microorganisme","Microbiologie","","","","" +"17788-1","Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif",,,"","","","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv new file mode 100644 index 00000000000..48d07d9fdc3 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv @@ -0,0 +1,9 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","血流速度.收缩期.最大值","速度","时间点","大脑中动脉","定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"11704-4","血流速度.收缩期.最大值","速度","时间点","动脉导管","定量型","超声.多普勒","产科学检查与测量指标.超声","","","动态 动脉管 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"17787-3","血流速度.收缩期.最大值","速度","时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"61438-6",,"速度","时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"10000-8","血流速度.收缩期.最大值",,"时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"17788-1","血流速度.收缩期.最大值","速度",,"大脑中动脉","定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"11488-4","血流速度.收缩期.最大值","速度","时间点",,"定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"47239-9","血流速度.收缩期.最大值","速度","时间点","大脑中动脉",,"超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv new file mode 100644 index 00000000000..d8cf83cd09e --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv @@ -0,0 +1,10 @@ +LOINC_NUM,LOINC_LONG_COMMON_NAME,IEEE_CF_CODE10,IEEE_REFID,IEEE_DESCRIPTION,IEEE_DIM,IEEE_UOM_UCUM +11556-8,Oxygen [Partial pressure] in Blood,160116,MDC_CONC_PO2_GEN,,LMT-2L-2 LMT-2L-2,kPa mm[Hg] +11557-6,Carbon dioxide [Partial pressure] in Blood,160064,MDC_CONC_PCO2_GEN,,LMT-2L-2 LMT-2L-2,kPa mm[Hg] +11558-4,pH of Blood,160004,MDC_CONC_PH_GEN,,[pH],[pH] +12961-9,Urea nitrogen [Mass/volume] in Arterial blood,160080,MDC_CONC_UREA_ART,,ML-3 NL-3,mg/dL mmol/L +14749-6,Glucose [Moles/volume] in Serum or Plasma,160196,MDC_CONC_GLU_VENOUS_PLASMA,Plasma glucose concentration taken from venous,NL-3 ,mmol/L +14749-6,Glucose [Moles/volume] in Serum or Plasma,160368,MDC_CONC_GLU_UNDETERMINED_PLASMA,Plasma glucose concentration taken from undetermined sample source,NL-3 ,mmol/L +15074-8,Glucose [Moles/volume] in Blood,160020,MDC_CONC_GLU_GEN,,NL-3,mmol/L +15074-8,Glucose [Moles/volume] in Blood,160364,MDC_CONC_GLU_UNDETERMINED_WHOLEBLOOD,Whole blood glucose concentration taken from undetermined sample source,NL-3 ,mmol/L +17861-6,Calcium [Mass/volume] in Serum or Plasma,160024,MDC_CONC_CA_GEN,,ML-3,mg/dL diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv new file mode 100644 index 00000000000..1acba586623 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv @@ -0,0 +1,10 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartTypeName" ,"PartName" ,"PartSequenceOrder","RID" ,"PreferredName" ,"RPID" ,"LongName" +"17787-3" ,"NM Thyroid gland Study report","LP199995-4","Rad.Anatomic Location.Region Imaged","Neck" ,"A" ,"RID7488" ,"neck" ,"" ,"" +"17787-3" ,"NM Thyroid gland Study report","LP206648-0","Rad.Anatomic Location.Imaging Focus","Thyroid gland" ,"A" ,"RID7578" ,"thyroid gland" ,"" ,"" +"17787-3" ,"NM Thyroid gland Study report","LP208891-4","Rad.Modality.Modality type" ,"NM" ,"A" ,"RID10330","nuclear medicine imaging","" ,"" +"24531-6" ,"US Retroperitoneum" ,"LP207608-3","Rad.Modality.Modality type" ,"US" ,"A" ,"RID10326","Ultrasound" ,"RPID2142","US Retroperitoneum" +"24531-6" ,"US Retroperitoneum" ,"LP199943-4","Rad.Anatomic Location.Imaging Focus","Retroperitoneum" ,"A" ,"RID431" ,"RETROPERITONEUM" ,"RPID2142","US Retroperitoneum" +"24531-6" ,"US Retroperitoneum" ,"LP199956-6","Rad.Anatomic Location.Region Imaged","Abdomen" ,"A" ,"RID56" ,"Abdomen" ,"RPID2142","US Retroperitoneum" +"24532-4" ,"US Abdomen RUQ" ,"LP199956-6","Rad.Anatomic Location.Region Imaged","Abdomen" ,"A" ,"RID56" ,"Abdomen" ,"" ,"" +"24532-4" ,"US Abdomen RUQ" ,"LP207608-3","Rad.Modality.Modality type" ,"US" ,"A" ,"RID10326","Ultrasound" ,"" ,"" +"24532-4" ,"US Abdomen RUQ" ,"LP208105-9","Rad.Anatomic Location.Imaging Focus","Right upper quadrant","A" ,"RID29994","Right upper quadrant" ,"" ,"" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv new file mode 100644 index 00000000000..72d95485a58 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv @@ -0,0 +1,10 @@ +"LOINC_NUM","LONG_COMMON_NAME","ORDER_OBS" +"42176-8","1,3 beta glucan [Mass/volume] in Serum","Both" +"53835-5","1,5-Anhydroglucitol [Mass/volume] in Serum or Plasma","Both" +"31019-3","10-Hydroxycarbazepine [Mass/volume] in Serum or Plasma","Both" +"6765-2","17-Hydroxypregnenolone [Mass/volume] in Serum or Plasma","Both" +"1668-3","17-Hydroxyprogesterone [Mass/volume] in Serum or Plasma","Both" +"32854-2","17-Hydroxyprogesterone [Presence] in DBS","Both" +"49054-0","25-Hydroxycalciferol [Mass/volume] in Serum or Plasma","Both" +"62292-8","25-Hydroxyvitamin D2+25-Hydroxyvitamin D3 [Mass/volume] in Serum or Plasma","Both" +"44907-4","5-Hydroxyindoleacetate panel - 24 hour Urine","Order" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv new file mode 100644 index 00000000000..527b8fd5cae --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv @@ -0,0 +1,10 @@ +PATH_TO_ROOT,SEQUENCE,IMMEDIATE_PARENT,CODE,CODE_TEXT +,1,,LP31755-9,Microbiology +LP31755-9,1,LP31755-9,LP14559-6,Microorganism +LP31755-9.LP14559-6,1,LP14559-6,LP98185-9,Bacteria +LP31755-9.LP14559-6.LP98185-9,1,LP98185-9,LP14082-9,Bacteria +LP31755-9.LP14559-6.LP98185-9.LP14082-9,1,LP14082-9,LP52258-8,Bacteria | Body Fluid +LP31755-9.LP14559-6.LP98185-9.LP14082-9.LP52258-8,1,LP52258-8,41599-2,Bacteria Fld Ql Micro +LP31755-9.LP14559-6.LP98185-9.LP14082-9,2,LP14082-9,LP52260-4,Bacteria | Cerebral spinal fluid +LP31755-9.LP14559-6.LP98185-9.LP14082-9.LP52260-4,1,LP52260-4,41602-4,Bacteria CSF Ql Micro +LP31755-9.LP14559-6.LP98185-9.LP14082-9,3,LP14082-9,LP52960-9,Bacteria | Cervix diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PanelsAndForms/AnswerList.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PanelsAndForms/AnswerList.csv new file mode 100644 index 00000000000..a448cf80f2d --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PanelsAndForms/AnswerList.csv @@ -0,0 +1,12 @@ +"AnswerListId","AnswerListName" ,"AnswerListOID" ,"ExtDefinedYN","ExtDefinedAnswerListCodeSystem","ExtDefinedAnswerListLink" ,"AnswerStringId","LocalAnswerCode","LocalAnswerCodeSystem","SequenceNumber","DisplayText" ,"ExtCodeId","ExtCodeDisplayName" ,"ExtCodeSystem" ,"ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" ,"SubsequentTextPrompt","Description","Score" +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13825-7" ,"1" , ,1 ,"1 slice or 1 dinner roll" , , , , , , , , +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13838-0" ,"2" , ,2 ,"2 slices or 2 dinner rolls" , , , , , , , , +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13892-7" ,"3" , ,3 ,"More than 2 slices or 2 dinner rolls", , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA6270-8" ,"00" , ,1 ,"Never" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13836-4" ,"01" , ,2 ,"1-3 times per month" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13834-9" ,"02" , ,3 ,"1-2 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13853-9" ,"03" , ,4 ,"3-4 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13860-4" ,"04" , ,5 ,"5-6 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13827-3" ,"05" , ,6 ,"1 time per day" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA4389-8" ,"97" , ,11 ,"Refused" ,"443390004","Refused (qualifier value)","http://snomed.info/sct","http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College", , , +"LL1892-0" ,"ICD-9_ICD-10" ,"1.3.6.1.4.1.12009.10.1.1069","Y" , ,"http://www.cdc.gov/nchs/icd.htm", , , , , , , , , , , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PanelsAndForms/Loinc.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PanelsAndForms/Loinc.csv new file mode 100644 index 00000000000..20379cb7f1d --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PanelsAndForms/Loinc.csv @@ -0,0 +1,16 @@ +"LOINC_NUM","COMPONENT" ,"PROPERTY","TIME_ASPCT","SYSTEM" ,"SCALE_TYP","METHOD_TYP" ,"CLASS" ,"VersionLastChanged","CHNG_TYPE","DefinitionDescription" ,"STATUS","CONSUMER_NAME","CLASSTYPE","FORMULA","SPECIES","EXMPL_ANSWERS","SURVEY_QUEST_TEXT" ,"SURVEY_QUEST_SRC" ,"UNITSREQUIRED","SUBMITTED_UNITS","RELATEDNAMES2" ,"SHORTNAME" ,"ORDER_OBS" ,"CDISC_COMMON_TESTS","HL7_FIELD_SUBFIELD_ID","EXTERNAL_COPYRIGHT_NOTICE" ,"EXAMPLE_UNITS","LONG_COMMON_NAME" ,"UnitsAndRange","DOCUMENT_SECTION","EXAMPLE_UCUM_UNITS","EXAMPLE_SI_UCUM_UNITS","STATUS_REASON","STATUS_TEXT","CHANGE_REASON_PUBLIC" ,"COMMON_TEST_RANK","COMMON_ORDER_RANK","COMMON_SI_TEST_RANK","HL7_ATTACHMENT_STRUCTURE","EXTERNAL_COPYRIGHT_LINK","PanelType","AskAtOrderEntry","AssociatedObservations" ,"VersionFirstReleased","ValidHL7AttachmentRequest" +"10013-1" ,"R' wave amplitude.lead I" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-I; R wave Amp L-I; Random; Right; Voltage" ,"R' wave Amp L-I" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead I" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10014-9" ,"R' wave amplitude.lead II" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"2; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-II; R wave Amp L-II; Random; Right; Voltage" ,"R' wave Amp L-II" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead II" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10015-6" ,"R' wave amplitude.lead III" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"3; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-III; R wave Amp L-III; Random; Right; Voltage" ,"R' wave Amp L-III" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead III" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10016-4" ,"R' wave amplitude.lead V1" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V1; R wave Amp L-V1; Random; Right; Voltage" ,"R' wave Amp L-V1" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V1" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"1001-7" ,"DBG Ab" ,"Pr" ,"Pt" ,"Ser/Plas^donor" ,"Ord" , ,"BLDBK" ,"2.44" ,"MIN" , ,"ACTIVE", ,1 , , , , , , , ,"ABS; Aby; Antby; Anti; Antibodies; Antibody; Autoantibodies; Autoantibody; BLOOD BANK; Donna Bennett-Goodspeed; Donr; Ordinal; Pl; Plasma; Plsm; Point in time; QL; Qual; Qualitative; Random; Screen; SerP; SerPl; SerPl^donor; SerPlas; Serum; Serum or plasma; SR" ,"DBG Ab SerPl Donr Ql" ,"Observation", , , , ,"DBG Ab [Presence] in Serum or Plasma from donor" , , , , , , ,"The Property has been changed from ACnc to Pr (Presence) to reflect the new model for ordinal terms where results are based on presence or absence." ,0 ,0 ,0 , , , , , , , +"10017-2" ,"R' wave amplitude.lead V2" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V2; R wave Amp L-V2; Random; Right; Voltage" ,"R' wave Amp L-V2" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V2" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10018-0" ,"R' wave amplitude.lead V3" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V3; R wave Amp L-V3; Random; Right; Voltage" ,"R' wave Amp L-V3" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V3" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10019-8" ,"R' wave amplitude.lead V4" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V4; R wave Amp L-V4; Random; Right; Voltage" ,"R' wave Amp L-V4" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V4" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10020-6" ,"R' wave amplitude.lead V5" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V5; R wave Amp L-V5; Random; Right; Voltage" ,"R' wave Amp L-V5" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V5" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Find" ,"Pt" ,"^Patient" ,"Ord" ,"PhenX" ,"PHENX" ,"2.44" ,"MIN" , ,"TRIAL" , ,2 , , , ,"Each time you eat bread, toast or dinner rolls, how much do you usually eat?","PhenX.050201100100","N" , ,"Finding; Findings; How much bread in 30D; Last; Ordinal; Point in time; QL; Qual; Qualitative; Random; Screen" ,"How much bread in 30D PhenX", , , , , ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]", , , , , , , ,0 ,0 ,0 , , , , , , , +"10000-8" ,"R wave duration.lead AVR" ,"Time" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; Durat; ECG; EKG.MEASUREMENTS; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave dur L-AVR; R wave dur L-AVR; Random; Right" ,"R wave dur L-AVR" ,"Observation", , , ,"s" ,"R wave duration in lead AVR" , , ,"s" , , , , ,0 ,0 ,0 , , , , , , , +"17787-3" ,"Study report" ,"Find" ,"Pt" ,"Neck>Thyroid gland","Doc" ,"NM" ,"RAD" ,"2.61" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Document; Finding; Findings; Imaging; Point in time; Radiology; Random; Study report; Thy" ,"NM Thyroid Study report" ,"Both" , , , , ,"NM Thyroid gland Study report" , , , , , , ,"Changed System from ""Thyroid"" for conformance with the LOINC/RadLex unified model.; Method of ""Radnuc"" was changed to ""NM"". The LOINC/RadLex Committee agreed to use a subset of the two-letter DICOM modality codes as the primary modality identifier." ,0 ,0 ,0 ,"IG exists" , , , ,"81220-6;72230-6" ,"1.0l" , +"17788-1" ,"Large unstained cells/100 leukocytes" ,"NFr" ,"Pt" ,"Bld" ,"Qn" ,"Automated count","HEM/BC" ,"2.50" ,"MIN" ,"Part of auto diff output of Bayer H*3S; peroxidase negative cells too large to be classified as lymph or basophil" ,"ACTIVE", ,1 , , , , , ,"Y" ,"%" ,"100WBC; Auto; Automated detection; Blood; Cell; Cellularity; Elec; Elect; Electr; HEMATOLOGY/CELL COUNTS; Leuc; Leuk; Leukocyte; Lkcs; LUC; Number Fraction; Percent; Point in time; QNT; Quan; Quant; Quantitative; Random; WB; WBC; WBCs; White blood cell; White blood cells; Whole blood" ,"LUC/leuk NFr Bld Auto" ,"Observation", , , ,"%" ,"Large unstained cells/100 leukocytes in Blood by Automated count" , , ,"%" , , , , ,1894 ,0 ,1894 , , , , , ,"1.0l" , +"11488-4" ,"Consultation note" ,"Find" ,"Pt" ,"{Setting}" ,"Doc" ,"{Role}" ,"DOC.ONTOLOGY","2.63" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Consult note; DOC.ONT; Document; Encounter; Evaluation and management; Evaluation and management note; Finding; Findings; notes; Point in time; Random; Visit note" ,"Consult note" ,"Both" , , , , ,"Consult note" , , , , , , ,"Edit made because this term is conformant to the Document Ontology axis values and therefore are being placed in this class.; Based on Clinical LOINC Committee decision during the September 2014 meeting, {Provider} was changed to {Author Type} to emphasize a greater breadth of potential document authors. At the September 2015 Clinical LOINC Committee meeting, the Committee decided to change {Author Type} to {Role} to align with the 'Role' axis name in the LOINC Document Ontology.; Because it is too difficult to maintain and because the distinction between documents and sections is not clear-cut nor necessary in most cases, the DOCUMENT_SECTION field has been deemed to have little value. The field has been set to null in the December 2017 release in preparation for removal in the December 2018 release. These changes were approved by the Clinical LOINC Committee.",0 ,0 ,0 ,"IG exists" , , , ,"81222-2;72231-4;81243-8","1.0j-a" ,"Y" +"47239-9" ,"Reason for stopping HIV Rx" ,"Type" ,"Pt" ,"^Patient" ,"Nom" ,"Reported" ,"ART" ,"2.50" ,"MIN" ,"Reason for stopping antiretroviral therapy" ,"ACTIVE", ,2 , , , , , ,"N" , ,"AIDS; Anti-retroviral therapy; ART; Human immunodeficiency virus; Nominal; Point in time; Random; Treatment; Typ" ,"Reason for stopping HIV Rx" ,"Observation", , ,"Copyright © 2006 World Health Organization. Used with permission. Publications of the World Health Organization can be obtained from WHO Press, World Health Organization, 20 Avenue Appia, 1211 Geneva 27, Switzerland (tel: +41 22 791 2476; fax: +41 22 791 4857; email: bookorders@who.int). Requests for permission to reproduce or translate WHO publications – whether for sale or for noncommercial distribution – should be addressed to WHO Press, at the above address (fax: +41 22 791 4806; email: permissions@who.int). The designations employed and the presentation of the material in this publication do not imply the expression of any opinion whatsoever on the part of the World Health Organization concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries. Dotted lines on maps represent approximate border lines for which there may not yet be full agreement. The mention of specific companies or of certain manufacturers’ products does not imply that they are endorsed or recommended by the World Health Organization in preference to others of a similar nature that are not mentioned. Errors and omissions excepted, the names of proprietary products are distinguished by initial capital letters. All reasonable precautions have been taken by WHO to verify the information contained in this publication. However, the published material is being distributed without warranty of any kind, either express or implied. The responsibility for the interpretation and use of the material lies with the reader. In no event shall the World Health Organization be liable for damages arising from its use.", ,"Reason for stopping HIV treatment" , , , , , , , ,0 ,0 ,0 , ,"WHO_HIV" , , , ,"2.22" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv new file mode 100644 index 00000000000..820602c77ad --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv @@ -0,0 +1,11 @@ +"LoincNumber","LongCommonName" ,"AnswerListId","AnswerListName" ,"AnswerListLinkType","ApplicableContext" +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]","LL1000-0" ,"PhenX05_13_30D bread amt","NORMATIVE" , +"10061-0" ,"S' wave amplitude in lead I" ,"LL1311-1" ,"PhenX12_44" ,"EXAMPLE" , +"10331-7" ,"Rh [Type] in Blood" ,"LL360-9" ,"Pos|Neg" ,"EXAMPLE" , +"10389-5" ,"Blood product.other [Type]" ,"LL2413-4" ,"Othr bld prod" ,"EXAMPLE" , +"10390-3" ,"Blood product special preparation [Type]" ,"LL2422-5" ,"Blood prod treatment" ,"EXAMPLE" , +"10393-7" ,"Factor IX given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10395-2" ,"Factor VIII given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10401-8" ,"Immune serum globulin given [Type]" ,"LL2421-7" ,"IM/IV" ,"EXAMPLE" , +"10410-9" ,"Plasma given [Type]" ,"LL2417-5" ,"Plasma type" ,"EXAMPLE" , +"10568-4" ,"Clarity of Semen" ,"LL2427-4" ,"Clear/Opales/Milky" ,"EXAMPLE" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/LoincPartLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/LoincPartLink.csv new file mode 100644 index 00000000000..36c84f3fe95 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/LoincPartLink.csv @@ -0,0 +1,10 @@ +"LoincNumber","LongCommonName","PartNumber","PartName","PartCodeSystem","PartTypeName","LinkTypeName","Property" +"10013-1","R' wave amplitude in lead I","LP31101-6","R' wave amplitude.lead I","http://loinc.org","COMPONENT","Primary","http://loinc.org/property/COMPONENT" +"10013-1","R' wave amplitude in lead I","LP6802-5","Elpot","http://loinc.org","PROPERTY","Primary","http://loinc.org/property/PROPERTY" +"10013-1","R' wave amplitude in lead I","LP6960-1","Pt","http://loinc.org","TIME","Primary","http://loinc.org/property/TIME_ASPCT" +"10013-1","R' wave amplitude in lead I","LP7289-4","Heart","http://loinc.org","SYSTEM","Primary","http://loinc.org/property/SYSTEM" +"10013-1","R' wave amplitude in lead I","LP7753-9","Qn","http://loinc.org","SCALE","Primary","http://loinc.org/property/SCALE_TYP" +"10013-1","R' wave amplitude in lead I","LP6244-0","EKG","http://loinc.org","METHOD","Primary","http://loinc.org/property/METHOD_TYP" +"10013-1","R' wave amplitude in lead I","LP31101-6","R' wave amplitude.lead I","http://loinc.org","COMPONENT","DetailedModel","http://loinc.org/property/analyte" +"10013-1","R' wave amplitude in lead I","LP6802-5","Elpot","http://loinc.org","PROPERTY","DetailedModel","http://loinc.org/property/PROPERTY" +"10013-1","R' wave amplitude in lead I","LP6960-1","Pt","http://loinc.org","TIME","DetailedModel","http://loinc.org/property/time-core" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/LoincPartLink_Primary.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/LoincPartLink_Primary.csv new file mode 100644 index 00000000000..8dbe575ffd2 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/LoincPartLink_Primary.csv @@ -0,0 +1,7 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartName" ,"PartCodeSystem" ,"PartTypeName","LinkTypeName","Property" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"Primary" ,"http://loinc.org/property/COMPONENT" +"10013-1" ,"R' wave amplitude in lead I","LP6802-5" ,"Elpot" ,"http://loinc.org","PROPERTY" ,"Primary" ,"http://loinc.org/property/PROPERTY" +"10013-1" ,"R' wave amplitude in lead I","LP6960-1" ,"Pt" ,"http://loinc.org","TIME" ,"Primary" ,"http://loinc.org/property/TIME_ASPCT" +"10013-1" ,"R' wave amplitude in lead I","LP7289-4" ,"Heart" ,"http://loinc.org","SYSTEM" ,"Primary" ,"http://loinc.org/property/SYSTEM" +"10013-1" ,"R' wave amplitude in lead I","LP7753-9" ,"Qn" ,"http://loinc.org","SCALE" ,"Primary" ,"http://loinc.org/property/SCALE_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP6244-0" ,"EKG" ,"http://loinc.org","METHOD" ,"Primary" ,"http://loinc.org/property/METHOD_TYP" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv new file mode 100644 index 00000000000..869c2c1651d --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv @@ -0,0 +1,13 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartName" ,"PartCodeSystem" ,"PartTypeName","LinkTypeName" ,"Property" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"DetailedModel" ,"http://loinc.org/property/analyte" +"10013-1" ,"R' wave amplitude in lead I","LP6802-5" ,"Elpot" ,"http://loinc.org","PROPERTY" ,"DetailedModel" ,"http://loinc.org/property/PROPERTY" +"10013-1" ,"R' wave amplitude in lead I","LP6960-1" ,"Pt" ,"http://loinc.org","TIME" ,"DetailedModel" ,"http://loinc.org/property/time-core" +"10013-1" ,"R' wave amplitude in lead I","LP7289-4" ,"Heart" ,"http://loinc.org","SYSTEM" ,"DetailedModel" ,"http://loinc.org/property/system-core" +"10013-1" ,"R' wave amplitude in lead I","LP7753-9" ,"Qn" ,"http://loinc.org","SCALE" ,"DetailedModel" ,"http://loinc.org/property/SCALE_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP6244-0" ,"EKG" ,"http://loinc.org","METHOD" ,"DetailedModel" ,"http://loinc.org/property/METHOD_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"SyntaxEnhancement","http://loinc.org/property/analyte-core" +"10013-1" ,"R' wave amplitude in lead I","LP190563-9","Cardiology" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP29708-2" ,"Cardiology" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7787-7" ,"Clinical" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7795-0" ,"EKG measurements" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7795-0" ,"EKG.MEAS" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/CLASS" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/Part.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/Part.csv new file mode 100644 index 00000000000..d5816ead286 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/Part.csv @@ -0,0 +1,46 @@ +"PartNumber","PartTypeName","PartName","PartDisplayName","Status" +"LP101394-7","ADJUSTMENT","adjusted for maternal weight","adjusted for maternal weight","ACTIVE" +"LP101907-6","ADJUSTMENT","corrected for age","corrected for age","ACTIVE" +"LP115711-6","ADJUSTMENT","corrected for background","corrected for background","ACTIVE" +"LP147359-6","ADJUSTMENT","adjusted for body weight","adjusted for body weight","ACTIVE" +"LP173482-3","ADJUSTMENT","1st specimen","1st specimen","DEPRECATED" +"LP173483-1","ADJUSTMENT","post cyanocobalamin",,"ACTIVE" +"LP173484-9","ADJUSTMENT","W hyperextension)",,"ACTIVE" +"LP6244-0","METHOD","EKG","Electrocardiogram (EKG)","ACTIVE" +"LP18172-4","COMPONENT","Interferon.beta","Interferon beta","ACTIVE" +"LP7289-4","SYSTEM","Heart","Heart","ACTIVE" +"LP6960-1","TIME","Pt","Point in time (spot)","ACTIVE" +"LP6802-5","PROPERTY","Elpot","Electrical Potential (Voltage)","ACTIVE" +"LP7753-9","SCALE","Qn","Qn","ACTIVE" +"LP31101-6","COMPONENT","R' wave amplitude.lead I","R' wave amplitude.lead I","ACTIVE" +"LP31102-4","COMPONENT","R' wave amplitude.lead II","R' wave amplitude.lead II","ACTIVE" +"LP31103-2","COMPONENT","R' wave amplitude.lead III","R' wave amplitude.lead III","ACTIVE" +"LP31104-0","COMPONENT","R' wave amplitude.lead V1","R' wave amplitude.lead V1","ACTIVE" +"LP31105-7","COMPONENT","R' wave amplitude.lead V2","R' wave amplitude.lead V2","ACTIVE" +"LP31106-5","COMPONENT","R' wave amplitude.lead V3","R' wave amplitude.lead V3","ACTIVE" +"LP31107-3","COMPONENT","R' wave amplitude.lead V4","R' wave amplitude.lead V4","ACTIVE" +"LP31108-1","COMPONENT","R' wave amplitude.lead V5","R' wave amplitude.lead V5","ACTIVE" +"LP31109-9","COMPONENT","R' wave amplitude.lead V6","R' wave amplitude.lead V6","ACTIVE" +"LP31110-7","COMPONENT","R' wave duration.lead AVF","R' wave duration.lead AVF","ACTIVE" +"LP30269-2","SYSTEM","Ser/Plas^donor",,"ACTIVE" +"LP149220-8","PROPERTY","Pr","Presence","ACTIVE" +"LP7751-3","SCALE","Ord","Ord","ACTIVE" +"LP37904-7","COMPONENT","DBG Ab","DBG Ab","ACTIVE" +"LP6813-2","PROPERTY","Find","Finding","ACTIVE" +"LP95333-8","METHOD","PhenX","PhenX","ACTIVE" +"LP102627-9","COMPONENT","Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days","ACTIVE" +"LP6879-3","PROPERTY","Time","Time (e.g. seconds)","ACTIVE" +"LP31088-5","COMPONENT","R wave duration.lead AVR","R wave duration.lead AVR","ACTIVE" +"LP206647-2","SYSTEM","Neck>Thyroid gland","Thyroid gland","ACTIVE" +"LP208655-3","METHOD","NM","NM","ACTIVE" +"LP32888-7","SCALE","Doc","Doc","ACTIVE" +"LP31534-8","COMPONENT","Study report","Study report","ACTIVE" +"LP7057-5","SYSTEM","Bld","Blood","ACTIVE" +"LP6838-9","PROPERTY","NFr","Number Fraction","ACTIVE" +"LP6141-8","METHOD","Automated count","Automated count","ACTIVE" +"LP15842-5","COMPONENT","Pyridoxine","Pyridoxine","ACTIVE" +"LP19258-0","COMPONENT","Large unstained cells","Large unstained cells","ACTIVE" +"LP32887-9","SYSTEM","{Setting}","{Setting}","ACTIVE" +"LP187178-1","METHOD","{Role}","Role-unspecified","ACTIVE" +"LP72311-1","COMPONENT","Consultation note","Consultation note","ACTIVE" + diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv new file mode 100644 index 00000000000..495416894ce --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv @@ -0,0 +1,12 @@ +"PartNumber","PartName" ,"PartTypeName","ExtCodeId" ,"ExtCodeDisplayName" ,"ExtCodeSystem" ,"Equivalence","ContentOrigin","ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" +"LP18172-4" ,"Interferon.beta" ,"COMPONENT" ," 420710006","Interferon beta (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org. This may incur a fee in SNOMED International non-Member countries." +"LP31706-2" ,"Nornicotine" ,"COMPONENT" ,"1018001" ,"Nornicotine (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org. This may incur a fee in SNOMED International non-Member countries." +"LP15826-8" ,"Prostaglandin F2","COMPONENT" ,"10192006" ,"Prostaglandin PGF2 (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org. This may incur a fee in SNOMED International non-Member countries." +"LP7400-7" ,"Liver" ,"SYSTEM" ,"10200004" ,"Liver structure (body structure)","http://snomed.info/sct" ,"wider" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org. This may incur a fee in SNOMED International non-Member countries." +"LP29165-5" ,"Liver.FNA" ,"SYSTEM" ,"10200004" ,"Liver structure (body structure)","http://snomed.info/sct" ,"narrower" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org. This may incur a fee in SNOMED International non-Member countries." +"LP15666-8" ,"Inosine" ,"COMPONENT" ,"102640000" ,"Inosine (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org. This may incur a fee in SNOMED International non-Member countries." +"LP15943-1" ,"Uronate" ,"COMPONENT" ,"102641001" ,"Uronic acid (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org. This may incur a fee in SNOMED International non-Member countries." +"LP15791-4" ,"Phenylketones" ,"COMPONENT" ,"102642008" ,"Phenylketones (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org. This may incur a fee in SNOMED International non-Member countries." +"LP15721-1" ,"Malonate" ,"COMPONENT" ,"102648007" ,"Malonic acid (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org. This may incur a fee in SNOMED International non-Member countries." +"LP15842-5" ,"Pyridoxine" ,"COMPONENT" ,"1054" ,"Pyridoxine" ,"http://pubchem.ncbi.nlm.nih.gov","equivalent" , , , +"LP15842-5" ,"Pyridoxine" ,"COMPONENT" ,"1054" ,"Pyridoxine" ,"http://foo/bar" ,"equivalent" , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv new file mode 100644 index 00000000000..1e9b3872892 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv @@ -0,0 +1,10 @@ +LOINC #,Long Common Name,Short Name,CLASS,Rank +14682-9,Creatinine [Moles/volume] in Serum or Plasma,Creat SerPl-mCnc,Chem,1 +718-7,Hemoglobin [Mass/volume] in Blood,Hgb Bld-mCnc,HEM/BC,2 +2823-3,Potassium [Moles/volume] in Serum or Plasma,Potassium SerPl-sCnc,Chem,3 +14749-6,Glucose [Moles/volume] in Serum or Plasma,Glucose SerPl-mCnc,Chem,4 +2951-2,Sodium [Moles/volume] in Serum or Plasma,Sodium SerPl-sCnc,Chem,5 +3094-0,Urea nitrogen [Mass/volume] in Serum or Plasma,BUN SerPl-mCnc,Chem,6 +2028-9,"Carbon dioxide, total [Moles/volume] in Serum or Plasma",CO2 SerPl-sCnc,Chem,7 +2075-0,Chloride [Moles/volume] in Serum or Plasma,Chloride SerPl-sCnc,Chem,8 +789-8,Erythrocytes [#/volume] in Blood by Automated count,RBC # Bld Auto,HEM/BC,9 diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv new file mode 100644 index 00000000000..c80db052dd3 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv @@ -0,0 +1,10 @@ +LOINC #,Long Common Name,Short Name,CLASS,Rank +2160-0,Creatinine [Mass/volume] in Serum or Plasma,Creat SerPl-mCnc,Chem,1 +718-7,Hemoglobin [Mass/volume] in Blood,Hgb Bld-mCnc,HEM/BC,2 +2823-3,Potassium [Moles/volume] in Serum or Plasma,Potassium SerPl-sCnc,Chem,3 +2345-7,Glucose [Mass/volume] in Serum or Plasma,Glucose SerPl-mCnc,Chem,4 +2951-2,Sodium [Moles/volume] in Serum or Plasma,Sodium SerPl-sCnc,Chem,5 +3094-0,Urea nitrogen [Mass/volume] in Serum or Plasma,BUN SerPl-mCnc,Chem,6 +2028-9,"Carbon dioxide, total [Moles/volume] in Serum or Plasma",CO2 SerPl-sCnc,Chem,7 +2075-0,Chloride [Moles/volume] in Serum or Plasma,Chloride SerPl-sCnc,Chem,8 +789-8,Erythrocytes [#/volume] in Blood by Automated count,RBC # Bld Auto,HEM/BC,9 diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/LoincTable/Loinc.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/LoincTable/Loinc.csv new file mode 100644 index 00000000000..20379cb7f1d --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/LoincTable/Loinc.csv @@ -0,0 +1,16 @@ +"LOINC_NUM","COMPONENT" ,"PROPERTY","TIME_ASPCT","SYSTEM" ,"SCALE_TYP","METHOD_TYP" ,"CLASS" ,"VersionLastChanged","CHNG_TYPE","DefinitionDescription" ,"STATUS","CONSUMER_NAME","CLASSTYPE","FORMULA","SPECIES","EXMPL_ANSWERS","SURVEY_QUEST_TEXT" ,"SURVEY_QUEST_SRC" ,"UNITSREQUIRED","SUBMITTED_UNITS","RELATEDNAMES2" ,"SHORTNAME" ,"ORDER_OBS" ,"CDISC_COMMON_TESTS","HL7_FIELD_SUBFIELD_ID","EXTERNAL_COPYRIGHT_NOTICE" ,"EXAMPLE_UNITS","LONG_COMMON_NAME" ,"UnitsAndRange","DOCUMENT_SECTION","EXAMPLE_UCUM_UNITS","EXAMPLE_SI_UCUM_UNITS","STATUS_REASON","STATUS_TEXT","CHANGE_REASON_PUBLIC" ,"COMMON_TEST_RANK","COMMON_ORDER_RANK","COMMON_SI_TEST_RANK","HL7_ATTACHMENT_STRUCTURE","EXTERNAL_COPYRIGHT_LINK","PanelType","AskAtOrderEntry","AssociatedObservations" ,"VersionFirstReleased","ValidHL7AttachmentRequest" +"10013-1" ,"R' wave amplitude.lead I" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-I; R wave Amp L-I; Random; Right; Voltage" ,"R' wave Amp L-I" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead I" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10014-9" ,"R' wave amplitude.lead II" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"2; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-II; R wave Amp L-II; Random; Right; Voltage" ,"R' wave Amp L-II" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead II" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10015-6" ,"R' wave amplitude.lead III" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"3; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-III; R wave Amp L-III; Random; Right; Voltage" ,"R' wave Amp L-III" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead III" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10016-4" ,"R' wave amplitude.lead V1" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V1; R wave Amp L-V1; Random; Right; Voltage" ,"R' wave Amp L-V1" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V1" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"1001-7" ,"DBG Ab" ,"Pr" ,"Pt" ,"Ser/Plas^donor" ,"Ord" , ,"BLDBK" ,"2.44" ,"MIN" , ,"ACTIVE", ,1 , , , , , , , ,"ABS; Aby; Antby; Anti; Antibodies; Antibody; Autoantibodies; Autoantibody; BLOOD BANK; Donna Bennett-Goodspeed; Donr; Ordinal; Pl; Plasma; Plsm; Point in time; QL; Qual; Qualitative; Random; Screen; SerP; SerPl; SerPl^donor; SerPlas; Serum; Serum or plasma; SR" ,"DBG Ab SerPl Donr Ql" ,"Observation", , , , ,"DBG Ab [Presence] in Serum or Plasma from donor" , , , , , , ,"The Property has been changed from ACnc to Pr (Presence) to reflect the new model for ordinal terms where results are based on presence or absence." ,0 ,0 ,0 , , , , , , , +"10017-2" ,"R' wave amplitude.lead V2" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V2; R wave Amp L-V2; Random; Right; Voltage" ,"R' wave Amp L-V2" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V2" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10018-0" ,"R' wave amplitude.lead V3" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V3; R wave Amp L-V3; Random; Right; Voltage" ,"R' wave Amp L-V3" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V3" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10019-8" ,"R' wave amplitude.lead V4" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V4; R wave Amp L-V4; Random; Right; Voltage" ,"R' wave Amp L-V4" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V4" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10020-6" ,"R' wave amplitude.lead V5" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V5; R wave Amp L-V5; Random; Right; Voltage" ,"R' wave Amp L-V5" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V5" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Find" ,"Pt" ,"^Patient" ,"Ord" ,"PhenX" ,"PHENX" ,"2.44" ,"MIN" , ,"TRIAL" , ,2 , , , ,"Each time you eat bread, toast or dinner rolls, how much do you usually eat?","PhenX.050201100100","N" , ,"Finding; Findings; How much bread in 30D; Last; Ordinal; Point in time; QL; Qual; Qualitative; Random; Screen" ,"How much bread in 30D PhenX", , , , , ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]", , , , , , , ,0 ,0 ,0 , , , , , , , +"10000-8" ,"R wave duration.lead AVR" ,"Time" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; Durat; ECG; EKG.MEASUREMENTS; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave dur L-AVR; R wave dur L-AVR; Random; Right" ,"R wave dur L-AVR" ,"Observation", , , ,"s" ,"R wave duration in lead AVR" , , ,"s" , , , , ,0 ,0 ,0 , , , , , , , +"17787-3" ,"Study report" ,"Find" ,"Pt" ,"Neck>Thyroid gland","Doc" ,"NM" ,"RAD" ,"2.61" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Document; Finding; Findings; Imaging; Point in time; Radiology; Random; Study report; Thy" ,"NM Thyroid Study report" ,"Both" , , , , ,"NM Thyroid gland Study report" , , , , , , ,"Changed System from ""Thyroid"" for conformance with the LOINC/RadLex unified model.; Method of ""Radnuc"" was changed to ""NM"". The LOINC/RadLex Committee agreed to use a subset of the two-letter DICOM modality codes as the primary modality identifier." ,0 ,0 ,0 ,"IG exists" , , , ,"81220-6;72230-6" ,"1.0l" , +"17788-1" ,"Large unstained cells/100 leukocytes" ,"NFr" ,"Pt" ,"Bld" ,"Qn" ,"Automated count","HEM/BC" ,"2.50" ,"MIN" ,"Part of auto diff output of Bayer H*3S; peroxidase negative cells too large to be classified as lymph or basophil" ,"ACTIVE", ,1 , , , , , ,"Y" ,"%" ,"100WBC; Auto; Automated detection; Blood; Cell; Cellularity; Elec; Elect; Electr; HEMATOLOGY/CELL COUNTS; Leuc; Leuk; Leukocyte; Lkcs; LUC; Number Fraction; Percent; Point in time; QNT; Quan; Quant; Quantitative; Random; WB; WBC; WBCs; White blood cell; White blood cells; Whole blood" ,"LUC/leuk NFr Bld Auto" ,"Observation", , , ,"%" ,"Large unstained cells/100 leukocytes in Blood by Automated count" , , ,"%" , , , , ,1894 ,0 ,1894 , , , , , ,"1.0l" , +"11488-4" ,"Consultation note" ,"Find" ,"Pt" ,"{Setting}" ,"Doc" ,"{Role}" ,"DOC.ONTOLOGY","2.63" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Consult note; DOC.ONT; Document; Encounter; Evaluation and management; Evaluation and management note; Finding; Findings; notes; Point in time; Random; Visit note" ,"Consult note" ,"Both" , , , , ,"Consult note" , , , , , , ,"Edit made because this term is conformant to the Document Ontology axis values and therefore are being placed in this class.; Based on Clinical LOINC Committee decision during the September 2014 meeting, {Provider} was changed to {Author Type} to emphasize a greater breadth of potential document authors. At the September 2015 Clinical LOINC Committee meeting, the Committee decided to change {Author Type} to {Role} to align with the 'Role' axis name in the LOINC Document Ontology.; Because it is too difficult to maintain and because the distinction between documents and sections is not clear-cut nor necessary in most cases, the DOCUMENT_SECTION field has been deemed to have little value. The field has been set to null in the December 2017 release in preparation for removal in the December 2018 release. These changes were approved by the Clinical LOINC Committee.",0 ,0 ,0 ,"IG exists" , , , ,"81222-2;72231-4;81243-8","1.0j-a" ,"Y" +"47239-9" ,"Reason for stopping HIV Rx" ,"Type" ,"Pt" ,"^Patient" ,"Nom" ,"Reported" ,"ART" ,"2.50" ,"MIN" ,"Reason for stopping antiretroviral therapy" ,"ACTIVE", ,2 , , , , , ,"N" , ,"AIDS; Anti-retroviral therapy; ART; Human immunodeficiency virus; Nominal; Point in time; Random; Treatment; Typ" ,"Reason for stopping HIV Rx" ,"Observation", , ,"Copyright © 2006 World Health Organization. Used with permission. Publications of the World Health Organization can be obtained from WHO Press, World Health Organization, 20 Avenue Appia, 1211 Geneva 27, Switzerland (tel: +41 22 791 2476; fax: +41 22 791 4857; email: bookorders@who.int). Requests for permission to reproduce or translate WHO publications – whether for sale or for noncommercial distribution – should be addressed to WHO Press, at the above address (fax: +41 22 791 4806; email: permissions@who.int). The designations employed and the presentation of the material in this publication do not imply the expression of any opinion whatsoever on the part of the World Health Organization concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries. Dotted lines on maps represent approximate border lines for which there may not yet be full agreement. The mention of specific companies or of certain manufacturers’ products does not imply that they are endorsed or recommended by the World Health Organization in preference to others of a similar nature that are not mentioned. Errors and omissions excepted, the names of proprietary products are distinguished by initial capital letters. All reasonable precautions have been taken by WHO to verify the information contained in this publication. However, the published material is being distributed without warranty of any kind, either express or implied. The responsibility for the interpretation and use of the material lies with the reader. In no event shall the World Health Organization be liable for damages arising from its use.", ,"Reason for stopping HIV treatment" , , , , , , , ,0 ,0 ,0 , ,"WHO_HIV" , , , ,"2.22" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/loinc.xml b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/loinc.xml new file mode 100644 index 00000000000..ed461aab3e5 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v-no-version/loinc.xml @@ -0,0 +1,543 @@ + + + + + + + + + + + + + + + + + + + + <status value="active"/> + <experimental value="false"/> + + <publisher value="Regenstrief Institute, Inc."/> + <contact> + <telecom> + <system value="url" /> + <value value="http://loinc.org"/> + </telecom> + </contact> + + <!-- + <date value=2021-06/> + --> + <description value="LOINC is a freely available international standard for tests, measurements, and observations"/> + <copyright value="This material contains content from LOINC (http://loinc.org). LOINC is copyright ©1995-2021, Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee and is available at no cost under the license at http://loinc.org/license. LOINC® is a registered United States trademark of Regenstrief Institute, Inc."/> + <caseSensitive value="false"/> + + <valueSet value="http://loinc.org/vs"/> + + <!-- + It's at the discretion of servers whether to present fragments of LOINC hierarchically or not, when using the code system resource. But, if they are hierarchical, the Hierarchy SHALL be based on the is-a relationship that is derived from the LOINC Multiaxial Hierarchy. + --> + <hierarchyMeaning value="is-a"/> + <compositional value="false"/> <!-- no compositional grammar in LOINC --> + <versionNeeded value="false"/> + + <!-- + This canonical definition of LOINC does not include the LOINC content, which is distributed separately for portability. + + Servers may choose to include fragments of LOINC for illustration purposes. + --> + <content value="not-present"/> + + <!-- + <count value="65000"/> + If working with a specific version, you could nominate a count of the total number of concepts (including the answers, Hierarchy, etc.). In this canonical definition we do not. + --> + + <!-- + FILTERS + Generally defined filters for specifying value sets + In LOINC, all the properties can also be used as filters, but they are not defined explicitly as filters. + Parent/child properties are as defined by FHIR. Note that at this time the LOINC code system resource does not support ancestor/descendant relationships. + + For illustration purposes, consider this slice of the LOINC Multiaxial Hierarchy when reading the descriptions below: + + Laboratory [LP29693-6] + Microbiology and Antimicrobial susceptibility [LP343406-7] + Microbiology [LP7819-8] + Microorganism [LP14559-6] + Virus [LP14855-8] + Zika virus [LP200137-0] + Zika virus RNA | XXX [LP203271-4] + Zika virus RNA | XXX | Microbiology [LP379670-5] + Zika virus RNA [Presence] in Unspecified specimen by Probe and target amplification method [79190-5] + + Language Note: The filters defined here are specified using the default LOINC language - English (US). Requests are meant to be specified and interpreted on the English version. The return can be in a specified language (if supported by the server). But note that not all filters/properties have language translations available. + --> + <filter> + <code value="parent"/> + <description value="Allows for the selection of a set of codes based on their appearance in the LOINC Multiaxial Hierarchy. Parent selects immediate parent only. For example, the code '79190-5' has the parent 'LP379670-5'"/> + <operator value="="/> + <value value="A Part code"/> + </filter> + <filter> + <code value="child"/> + <description value="Allows for the selection of a set of codes based on their appearance in the LOINC Multiaxial Hierarchy. Child selects immediate children only. For example, the code 'LP379670-5' has the child '79190-5'. Only LOINC Parts have children; LOINC codes do not have any children because they are leaf nodes."/> + <operator value="="/> + <value value="A comma separated list of Part or LOINC codes"/> + </filter> + <filter> + <code value="copyright"/> + <description value="Allows for the inclusion or exclusion of LOINC codes that include 3rd party copyright notices. LOINC = only codes with a sole copyright by Regenstrief. 3rdParty = only codes with a 3rd party copyright in addition to the one from Regenstrief"/> + <operator value="="/> + <value value="LOINC | 3rdParty"/> + </filter> + + <!-- + PROPERTIES + There are 4 kinds of properties that apply to all LOINC codes: + 1. FHIR: display, designation; these are not described here since they are inherent in the specification + 2. Infrastructural: defined by FHIR, but documented here for the LOINC Multiaxial Hierarchy + 3. Primary LOINC properties: defined by the main LOINC table + 4. Secondary LOINC properties: defined by the LoincPartLink table + Additionally, there are 2 kinds of properties specific to Document ontology and Radiology codes, respectively: + 1. LOINC/RSNA Radiology Playbook properties + 2. Document Ontology properties + --> + <!-- + Infrastructural properties - inherited from FHIR, but documented here for the LOINC Multiaxial Hierarchy. + --> + + <property> + <code value="parent"/> + <uri value="http://hl7.org/fhir/concept-properties#parent"/> + <description value="A parent code in the Multiaxial Hierarchy"/> + <type value="code"/> + </property> + <property> + <code value="child"/> + <uri value="http://hl7.org/fhir/concept-properties#child"/> + <description value="A child code in the Multiaxial Hierarchy"/> + <type value="code"/> + </property> + + <!-- + Primary LOINC properties. + These apply to the main LOINC codes, but not the Multiaxial Hierarchy, Answer lists, or the Part codes. + Notes: + In the LOINC code system resource, the display element = LONG_COMMON_NAME + Many properties are specified as type "Coding", which allows use of LOINC Part codes (LP-) and the display text. LOINC Parts and their associations to LOINC terms are published in the LOINC Part File. + The properties defined here follow the guidance of the LOINC Users' Guide, which states that they should be expressed with the LOINC attributes contained in the LOINC Table. Properties that are not defined in the LOINC Table use FHIR-styled names. + --> + + <property> + <code value="STATUS"/> + <uri value="http://loinc.org/property/STATUS"/> + <description value="Status of the term. Within LOINC, codes with STATUS=DEPRECATED are considered inactive. Current values: ACTIVE, TRIAL, DISCOURAGED, and DEPRECATED"/> + <type value="string"/> + </property> + <property> + <code value="COMPONENT"/> + <uri value="http://loinc.org/property/COMPONENT"/> + <description value="First major axis-component or analyte: Analyte Name, Analyte sub-class, Challenge"/> + <type value="Coding"/> + </property> + <property> + <code value="PROPERTY"/> + <uri value="http://loinc.org/property/PROPERTY"/> + <description value="Second major axis-property observed: Kind of Property (also called kind of quantity)"/> + <type value="Coding"/> + </property> + <property> + <code value="TIME_ASPCT"/> + <uri value="http://loinc.org/property/TIME_ASPCT"/> + <description value="Third major axis-timing of the measurement: Time Aspect (Point or moment in time vs. time interval)"/> + <type value="Coding"/> + </property> + <property> + <code value="SYSTEM"/> + <uri value="http://loinc.org/property/SYSTEM"/> + <description value="Fourth major axis-type of specimen or system: System (Sample) Type"/> + <type value="Coding"/> + </property> + <property> + <code value="SCALE_TYP"/> + <uri value="http://loinc.org/property/SCALE_TYP"/> + <description value="Fifth major axis-scale of measurement: Type of Scale"/> + <type value="Coding"/> + </property> + <property> + <code value="METHOD_TYP"/> + <uri value="http://loinc.org/property/METHOD_TYP"/> + <description value="Sixth major axis-method of measurement: Type of Method"/> + <type value="Coding"/> + </property> + <property> + <code value="CLASS"/> + <uri value="http://loinc.org/property/CLASS"/> + <description value="An arbitrary classification of terms for grouping related observations together"/> + <type value="Coding"/> + </property> + <property> + <code value="VersionLastChanged"/> + <uri value="http://loinc.org/property/VersionLastChanged"/> + <description value="The LOINC version number in which the record has last changed. For new records, this field contains the same value as the VersionFirstReleased property."/> + <type value="string"/> + </property> + <property> + <code value="CLASSTYPE"/> + <uri value="http://loinc.org/property/CLASSTYPE"/> + <description value="1=Laboratory class; 2=Clinical class; 3=Claims attachments; 4=Surveys"/> + <type value="string"/> + </property> + <property> + <code value="ORDER_OBS"/> + <uri value="http://loinc.org/property/ORDER_OBS"/> + <description value="Provides users with an idea of the intended use of the term by categorizing it as an order only, observation only, or both"/> + <type value="string"/> + </property> + <property> + <code value="HL7_ATTACHMENT_STRUCTURE"/> + <uri value="http://loinc.org/property/HL7_ATTACHMENT_STRUCTURE"/> + <description value="This property is populated in collaboration with the HL7 Payer-Provider Exchange (PIE) Work Group (previously called Attachments Work Group) as described in the HL7 Attachment Specification: Supplement to Consolidated CDA Templated Guide."/> + <type value="string"/> + </property> + <property> + <code value="VersionFirstReleased"/> + <uri value="http://loinc.org/property/VersionFirstReleased"/> + <description value="This is the LOINC version number in which this LOINC term was first published."/> + <type value="string"/> + </property> + <property> + <code value="PanelType"/> + <uri value="http://loinc.org/property/PanelType"/> + <description value="For LOINC terms that are panels, this attribute classifies them as a 'Convenience group', 'Organizer', or 'Panel'"/> + <type value="string"/> + </property> + <property> + <code value="ValidHL7AttachmentRequest"/> + <uri value="http://loinc.org/property/ValidHL7AttachmentRequest"/> + <description value="A value of Y in this field indicates that this LOINC code can be sent by a payer as part of an HL7 Attachment request for additional information."/> + <type value="string"/> + </property> + <property> + <code value="DisplayName"/> + <uri value="http://loinc.org/property/DisplayName"/> + <description value="A name that is more 'clinician-friendly' compared to the current LOINC Short Name, Long Common Name, and Fully Specified Name. It is created algorithmically from the manually crafted display text for each Part and is generally more concise than the Long Common Name."/> + <type value="string"/> + </property> + <property> + <code value="answer-list"/> + <uri value="http://loinc.org/property/answer-list"/> + <description value="An answer list associated with this LOINC code (if there are matching answer lists defined)."/> + <type value="Coding"/> + </property> + + <!-- + Secondary LOINC properties. + These properties also apply to the main LOINC codes, but not the Multiaxial Hierarchy, Answer lists, or the Part codes. + Notes: + These properties are defined in the LoincPartLink table. + --> + + <property> + <code value="analyte"/> + <uri value="http://loinc.org/property/analyte"/> + <description value="First sub-part of the Component, i.e., the part of the Component before the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-core"/> + <uri value="http://loinc.org/property/analyte-core"/> + <description value="The primary part of the analyte without the suffix"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-suffix"/> + <uri value="http://loinc.org/property/analyte-suffix"/> + <description value="The suffix part of the analyte, if present, e.g., Ab or DNA"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-numerator"/> + <uri value="http://loinc.org/property/analyte-numerator"/> + <description value="The numerator part of the analyte, i.e., everything before the slash in analytes that contain a divisor"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-divisor"/> + <uri value="http://loinc.org/property/analyte-divisor"/> + <description value="The divisor part of the analyte, if present, i.e., after the slash and before the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-divisor-suffix"/> + <uri value="http://loinc.org/property/analyte-divisor-suffix"/> + <description value="The suffix part of the divisor, if present"/> + <type value="Coding"/> + </property> + <property> + <code value="challenge"/> + <uri value="http://loinc.org/property/challenge"/> + <description value="Second sub-part of the Component, i.e., after the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="adjustment"/> + <uri value="http://loinc.org/property/adjustment"/> + <description value="Third sub-part of the Component, i.e., after the second carat"/> + <type value="Coding"/> + </property> + <property> + <code value="count"/> + <uri value="http://loinc.org/property/count"/> + <description value="Fourth sub-part of the Component, i.e., after the third carat"/> + <type value="Coding"/> + </property> + <property> + <code value="time-core"/> + <uri value="http://loinc.org/property/time-core"/> + <description value="The primary part of the Time"/> + <type value="Coding"/> + </property> + <property> + <code value="time-modifier"/> + <uri value="http://loinc.org/property/time-modifier"/> + <description value="The modifier of the Time value, such as mean or max"/> + <type value="Coding"/> + </property> + <property> + <code value="system-core"/> + <uri value="http://loinc.org/property/system-core"/> + <description value="The primary part of the System, i.e., without the super system"/> + <type value="Coding"/> + </property> + <property> + <code value="super-system"/> + <uri value="http://loinc.org/property/super-system"/> + <description value="The super system part of the System, if present. The super system represents the source of the specimen when the source is someone or something other than the patient whose chart the result will be stored in. For example, fetus is the super system for measurements done on obstetric ultrasounds, because the fetus is being measured and that measurement is being recorded in the patient's (mother's) chart."/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-gene"/> + <uri value="http://loinc.org/property/analyte-gene"/> + <description value="The specific gene represented in the analyte"/> + <type value="Coding"/> + </property> + <property> + <code value="category"/> + <uri value="http://loinc.org/property/category"/> + <description value="A single LOINC term can be assigned one or more categories based on both programmatic and manual tagging. Category properties also utilize LOINC Class Parts."/> + <type value="Coding"/> + </property> + <property> + <code value="search"/> + <uri value="http://loinc.org/property/search"/> + <description value="Synonyms, fragments, and other Parts that are linked to a term to enable more encompassing search results."/> + <type value="Coding"/> + </property> + + <!-- + LOINC/RSNA Radiology Playbook properties. These apply only to terms in the LOINC/RSNA Radiology Playbook File. + Notes: + Properties are specified as type "Coding", which are represented by LOINC Part codes (LP-) and their display names. + The attribute names here use FHIR styled names rather than their original LOINC style names because the original names contain periods. + --> + + <property> + <code value="rad-modality-modality-type"/> + <uri value="http://loinc.org/property/rad-modality-modality-type"/> + <description value="Modality is used to represent the device used to acquire imaging information."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-modality-modality-subtype"/> + <uri value="http://loinc.org/property/rad-modality-modality-subtype"/> + <description value="Modality subtype may be optionally included to signify a particularly common or evocative configuration of the modality."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-region-imaged"/> + <uri value="http://loinc.org/property/rad-anatomic-location-region-imaged"/> + <description value="The Anatomic Location Region Imaged attribute is used in two ways: as a coarse-grained descriptor of the area imaged and a grouper for finding related imaging exams; or, it is used just as a grouper."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-imaging-focus"/> + <uri value="http://loinc.org/property/rad-anatomic-location-imaging-focus"/> + <description value="The Anatomic Location Imaging Focus is a more fine-grained descriptor of the specific target structure of an imaging exam. In many areas, the focus should be a specific organ."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-laterality-presence"/> + <uri value="http://loinc.org/property/rad-anatomic-location-laterality-presence"/> + <description value="Radiology Exams that require laterality to be specified in order to be performed are signified with an Anatomic Location Laterality Presence attribute set to 'True'"/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-laterality"/> + <uri value="http://loinc.org/property/rad-anatomic-location-laterality"/> + <description value="Radiology exam Laterality is specified as one of: Left, Right, Bilateral, Unilateral, Unspecified"/> + <type value="Coding"/> + </property> + <property> + <code value="rad-view-aggregation"/> + <uri value="http://loinc.org/property/rad-view-aggregation"/> + <description value="Aggregation describes the extent of the imaging performed, whether in quantitative terms (e.g., '3 or more views') or subjective terms (e.g., 'complete')."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-view-view-type"/> + <uri value="http://loinc.org/property/rad-view-view-type"/> + <description value="View type names specific views, such as 'lateral' or 'AP'."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-maneuver-maneuver-type"/> + <uri value="http://loinc.org/property/rad-maneuver-maneuver-type"/> + <description value="Maneuver type indicates an action taken with the goal of elucidating or testing a dynamic aspect of the anatomy."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-timing"/> + <uri value="http://loinc.org/property/rad-timing"/> + <description value="The Timing/Existence property used in conjunction with pharmaceutical and maneuver properties. It specifies whether or not the imaging occurs in the presence of the administered pharmaceutical or a maneuver designed to test some dynamic aspect of anatomy or physiology ."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-pharmaceutical-substance-given"/> + <uri value="http://loinc.org/property/rad-pharmaceutical-substance-given"/> + <description value="The Pharmaceutical Substance Given specifies administered contrast agents, radiopharmaceuticals, medications, or other clinically important agents and challenges during the imaging procedure."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-pharmaceutical-route"/> + <uri value="http://loinc.org/property/rad-pharmaceutical-route"/> + <description value="Route specifies the route of administration of the pharmaceutical."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-reason-for-exam"/> + <uri value="http://loinc.org/property/rad-reason-for-exam"/> + <description value="Reason for exam is used to describe a clinical indication or a purpose for the study."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-presence"/> + <uri value="http://loinc.org/property/rad-guidance-for-presence"/> + <description value="Guidance for.Presence indicates when a procedure is guided by imaging."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-approach"/> + <uri value="http://loinc.org/property/rad-guidance-for-approach"/> + <description value="Guidance for.Approach refers to the primary route of access used, such as percutaneous, transcatheter, or transhepatic."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-action"/> + <uri value="http://loinc.org/property/rad-guidance-for-action"/> + <description value="Guidance for.Action indicates the intervention performed, such as biopsy, aspiration, or ablation."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-object"/> + <uri value="http://loinc.org/property/rad-guidance-for-object"/> + <description value="Guidance for.Object specifies the target of the action, such as mass, abscess or cyst."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-subject"/> + <uri value="http://loinc.org/property/rad-subject"/> + <description value="Subject is intended for use when there is a need to distinguish between the patient associated with an imaging study, and the target of the study."/> + <type value="Coding"/> + </property> + + <!-- + Document Ontology properties. + These apply only to terms in the LOINC Document Ontology File + Notes + Properties are specified as type "Coding", which are represented by LOINC Part codes (LP-) and their display names. + The attribute names here use FHIR styled names rather than their original LOINC style names because those contain periods. + --> + + <property> + <code value="document-kind"/> + <uri value="http://loinc.org/property/document-kind"/> + <description value="Characterizes the general structure of the document at a macro level."/> + <type value="Coding"/> + </property> + <property> + <code value="document-role"/> + <uri value="http://loinc.org/property/document-role"/> + <description value="Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty."/> + <type value="Coding"/> + </property> + <property> + <code value="document-setting"/> + <uri value="http://loinc.org/property/document-setting"/> + <description value="Setting is a modest extension of CMS’s coarse definition of care settings, such as outpatient, hospital, etc. Setting is not equivalent to location, which typically has more locally defined meanings."/> + <type value="Coding"/> + </property> + <property> + <code value="document-subject-matter-domain"/> + <uri value="http://loinc.org/property/document-subject-matter-domain"/> + <description value="Characterizes the clinical domain that is the subject of the document. For example, Internal Medicine, Neurology, Physical Therapy, etc."/> + <type value="Coding"/> + </property> + <property> + <code value="document-type-of-service"/> + <uri value="http://loinc.org/property/document-type-of-service"/> + <description value="Characterizes the kind of service or activity provided to/for the patient (or other subject of the service) that is described in the document."/> + <type value="Coding"/> + </property> + + <!-- Answer list related properties --> + <property> + <code value="answers-for"/> + <uri value="http://loinc.org/property/answers-for"/> + <description value="A LOINC Code for which this answer list is used."/> + <type value="Coding"/> + </property> + + <!-- Note for future consideration. These are properties of LA codes in the context of a particular list. Not global properties. + <property> + <code value="sequence"/> + <uri value="http://loinc.org/property/sequence"/> + <description value="Sequence Number of a answer in a set of answers (LA- codes only)"/> + <type value="integer"/> + </property> + <property> + <code value="score"/> + <uri value="http://loinc.org/property/score"/> + <description value="Score assigned to an answer (LA- codes only)"/> + <type value="integer"/> + </property> + --> +</CodeSystem> + + diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/AnswerFile/AnswerList.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/AnswerFile/AnswerList.csv new file mode 100644 index 00000000000..650551cb1be --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/AnswerFile/AnswerList.csv @@ -0,0 +1,12 @@ +"AnswerListId","AnswerListName" ,"AnswerListOID" ,"ExtDefinedYN","ExtDefinedAnswerListCodeSystem","ExtDefinedAnswerListLink" ,"AnswerStringId","LocalAnswerCode","LocalAnswerCodeSystem","SequenceNumber","DisplayText" ,"ExtCodeId","ExtCodeDisplayName" ,"ExtCodeSystem" ,"ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" ,"SubsequentTextPrompt","Description","Score" +"LL1000-0" ,"v2.67 PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13825-7" ,"1" , ,1 ,"v2.67 1 slice or 1 dinner roll" , , , , , , , , +"LL1000-0" ,"v2.67 PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13838-0" ,"2" , ,2 ,"v2.67 2 slices or 2 dinner rolls" , , , , , , , , +"LL1000-0" ,"v2.67 PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13892-7" ,"3" , ,3 ,"v2.67 More than 2 slices or 2 dinner rolls", , , , , , , , +"LL1001-8" ,"v2.67 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA6270-8" ,"00" , ,1 ,"v2.67 Never" , , , , , , , , +"LL1001-8" ,"v2.67 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13836-4" ,"01" , ,2 ,"v2.67 1-3 times per month" , , , , , , , , +"LL1001-8" ,"v2.67 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13834-9" ,"02" , ,3 ,"v2.67 1-2 times per week" , , , , , , , , +"LL1001-8" ,"v2.67 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13853-9" ,"03" , ,4 ,"v2.67 3-4 times per week" , , , , , , , , +"LL1001-8" ,"v2.67 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13860-4" ,"04" , ,5 ,"v2.67 5-6 times per week" , , , , , , , , +"LL1001-8" ,"v2.67 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13827-3" ,"05" , ,6 ,"v2.67 1 time per day" , , , , , , , , +"LL1001-8" ,"v2.67 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA4389-8" ,"97" , ,11 ,"v2.67 Refused" ,"443390004","Refused (qualifier value)","http://snomed.info/sct","http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College", , , +"LL1892-0" ,"v2.67 ICD-9_ICD-10" ,"1.3.6.1.4.1.12009.10.1.1069","Y" , ,"http://www.cdc.gov/nchs/icd.htm", , , , ,"v2.67 " , , , , , , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv new file mode 100644 index 00000000000..820602c77ad --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv @@ -0,0 +1,11 @@ +"LoincNumber","LongCommonName" ,"AnswerListId","AnswerListName" ,"AnswerListLinkType","ApplicableContext" +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]","LL1000-0" ,"PhenX05_13_30D bread amt","NORMATIVE" , +"10061-0" ,"S' wave amplitude in lead I" ,"LL1311-1" ,"PhenX12_44" ,"EXAMPLE" , +"10331-7" ,"Rh [Type] in Blood" ,"LL360-9" ,"Pos|Neg" ,"EXAMPLE" , +"10389-5" ,"Blood product.other [Type]" ,"LL2413-4" ,"Othr bld prod" ,"EXAMPLE" , +"10390-3" ,"Blood product special preparation [Type]" ,"LL2422-5" ,"Blood prod treatment" ,"EXAMPLE" , +"10393-7" ,"Factor IX given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10395-2" ,"Factor VIII given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10401-8" ,"Immune serum globulin given [Type]" ,"LL2421-7" ,"IM/IV" ,"EXAMPLE" , +"10410-9" ,"Plasma given [Type]" ,"LL2417-5" ,"Plasma type" ,"EXAMPLE" , +"10568-4" ,"Clarity of Semen" ,"LL2427-4" ,"Clear/Opales/Milky" ,"EXAMPLE" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/ConsumerName/ConsumerName.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/ConsumerName/ConsumerName.csv new file mode 100644 index 00000000000..b4ec2907985 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/ConsumerName/ConsumerName.csv @@ -0,0 +1,6 @@ +"LoincNumber","ConsumerName" +"61438-8","Consumer Name 61438-8" +,"Consumer Name X" +47239-9","" +"17787-3","Consumer Name 17787-3" +"38699-5","1,1-Dichloroethane, Air" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/DocumentOntology/DocumentOntology.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/DocumentOntology/DocumentOntology.csv new file mode 100644 index 00000000000..f857d7f297b --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/DocumentOntology/DocumentOntology.csv @@ -0,0 +1,10 @@ +"LoincNumber","PartNumber","PartTypeName","PartSequenceOrder","PartName" +"11488-4","LP173418-7","Document.Kind","1","Note" +"11488-4","LP173110-0","Document.TypeOfService","1","Consultation" +"11488-4","LP173061-5","Document.Setting","1","{Setting}" +"11488-4","LP187187-2","Document.Role","1","{Role}" +"11490-0","LP173418-7","Document.Kind","1","Note" +"11490-0","LP173221-5","Document.TypeOfService","1","Discharge summary" +"11490-0","LP173061-5","Document.Setting","1","{Setting}" +"11490-0","LP173084-7","Document.Role","1","Physician" +"11492-6","LP173418-7","Document.Kind","1","Note" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/GroupFile/Group.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/GroupFile/Group.csv new file mode 100644 index 00000000000..66f5561ea1c --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/GroupFile/Group.csv @@ -0,0 +1,2 @@ +"ParentGroupId","GroupId","Group","Archetype","Status","VersionFirstReleased" +"LG100-4","LG1695-8","1,4-Dichlorobenzene|MCnc|Pt|ANYBldSerPl","","Active","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/GroupFile/GroupLoincTerms.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/GroupFile/GroupLoincTerms.csv new file mode 100644 index 00000000000..04c19759cfb --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/GroupFile/GroupLoincTerms.csv @@ -0,0 +1,3 @@ +"Category","GroupId","Archetype","LoincNumber","LongCommonName" +"Flowsheet","LG1695-8","","17424-3","1,4-Dichlorobenzene [Mass/volume] in Blood" +"Flowsheet","LG1695-8","","13006-2","1,4-Dichlorobenzene [Mass/volume] in Serum or Plasma" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/GroupFile/ParentGroup.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/GroupFile/ParentGroup.csv new file mode 100644 index 00000000000..734a86c43dd --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/GroupFile/ParentGroup.csv @@ -0,0 +1,2 @@ +"ParentGroupId","ParentGroup","Status" +"LG100-4","Chem_DrugTox_Chal_Sero_Allergy<SAME:Comp|Prop|Tm|Syst (except intravascular and urine)><ANYBldSerPlas,ANYUrineUrineSed><ROLLUP:Method>","ACTIVE" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv new file mode 100644 index 00000000000..06e5b67b70d --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv @@ -0,0 +1,10 @@ +"LOINC_NUM","LONG_COMMON_NAME" +"11525-3","US Pelvis Fetus for pregnancy" +"17787-3","v2.67 NM Thyroid gland Study report" +"18744-3","Bronchoscopy study" +"18746-8","Colonoscopy study" +"18748-4","Diagnostic imaging study" +"18751-8","Endoscopy study" +"18753-4","Flexible sigmoidoscopy study" +"24531-6","US Retroperitoneum" +"24532-4","US Abdomen RUQ" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv new file mode 100644 index 00000000000..c79b3197490 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv @@ -0,0 +1,9 @@ +"ID","ISO_LANGUAGE","ISO_COUNTRY","LANGUAGE_NAME","PRODUCER" +"5","zh","CN","Chinese (CHINA)","Lin Zhang, A LOINC volunteer from China" +"7","es","AR","Spanish (ARGENTINA)","Conceptum Medical Terminology Center" +"8","fr","CA","French (CANADA)","Canada Health Infoway Inc." +,"de","AT","German (AUSTRIA)","ELGA, Austria" +"88",,"AT","German (AUSTRIA)","ELGA, Austria" +"89","de",,"German (AUSTRIA)","ELGA, Austria" +"90","de","AT",,"ELGA, Austria" +"24","de","AT","German (AUSTRIA)","ELGA, Austria" \ No newline at end of file diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv new file mode 100644 index 00000000000..c6882d47504 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv @@ -0,0 +1,4 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","Entlassungsbrief Ärztlich","Ergebnis","Zeitpunkt","{Setting}","Dokument","Dermatologie","DOC.ONTOLOGY","de shortname","de long common name","de related names 2","de linguistic variant display name" +"43730-1","","","","","","","","","","EBV-DNA qn. PCR","EBV-DNA quantitativ PCR" +"17787-3","","","","","","","","","","CoV OC43 RNA ql/SM P","Coronavirus OC43 RNA ql. /Sondermaterial PCR" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv new file mode 100644 index 00000000000..fa09e0cb242 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv @@ -0,0 +1,6 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif","Immunofluorescence","Sérologie","","","","" +"11704-4","Gliale nucléaire de type 1 , IgG","Titre","Temps ponctuel","LCR","Quantitatif","Immunofluorescence","Sérologie","","","","" +,"Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif",,,"","","","" +"17787-3","Virus respiratoire syncytial bovin","Présence-Seuil","Temps ponctuel","XXX","Ordinal","Culture spécifique à un microorganisme","Microbiologie","","","","" +"17788-1","Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif",,,"","","","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv new file mode 100644 index 00000000000..48d07d9fdc3 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv @@ -0,0 +1,9 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","血流速度.收缩期.最大值","速度","时间点","大脑中动脉","定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"11704-4","血流速度.收缩期.最大值","速度","时间点","动脉导管","定量型","超声.多普勒","产科学检查与测量指标.超声","","","动态 动脉管 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"17787-3","血流速度.收缩期.最大值","速度","时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"61438-6",,"速度","时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"10000-8","血流速度.收缩期.最大值",,"时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"17788-1","血流速度.收缩期.最大值","速度",,"大脑中动脉","定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"11488-4","血流速度.收缩期.最大值","速度","时间点",,"定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"47239-9","血流速度.收缩期.最大值","速度","时间点","大脑中动脉",,"超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv new file mode 100644 index 00000000000..d8cf83cd09e --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv @@ -0,0 +1,10 @@ +LOINC_NUM,LOINC_LONG_COMMON_NAME,IEEE_CF_CODE10,IEEE_REFID,IEEE_DESCRIPTION,IEEE_DIM,IEEE_UOM_UCUM +11556-8,Oxygen [Partial pressure] in Blood,160116,MDC_CONC_PO2_GEN,,LMT-2L-2 LMT-2L-2,kPa mm[Hg] +11557-6,Carbon dioxide [Partial pressure] in Blood,160064,MDC_CONC_PCO2_GEN,,LMT-2L-2 LMT-2L-2,kPa mm[Hg] +11558-4,pH of Blood,160004,MDC_CONC_PH_GEN,,[pH],[pH] +12961-9,Urea nitrogen [Mass/volume] in Arterial blood,160080,MDC_CONC_UREA_ART,,ML-3 NL-3,mg/dL mmol/L +14749-6,Glucose [Moles/volume] in Serum or Plasma,160196,MDC_CONC_GLU_VENOUS_PLASMA,Plasma glucose concentration taken from venous,NL-3 ,mmol/L +14749-6,Glucose [Moles/volume] in Serum or Plasma,160368,MDC_CONC_GLU_UNDETERMINED_PLASMA,Plasma glucose concentration taken from undetermined sample source,NL-3 ,mmol/L +15074-8,Glucose [Moles/volume] in Blood,160020,MDC_CONC_GLU_GEN,,NL-3,mmol/L +15074-8,Glucose [Moles/volume] in Blood,160364,MDC_CONC_GLU_UNDETERMINED_WHOLEBLOOD,Whole blood glucose concentration taken from undetermined sample source,NL-3 ,mmol/L +17861-6,Calcium [Mass/volume] in Serum or Plasma,160024,MDC_CONC_CA_GEN,,ML-3,mg/dL diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv new file mode 100644 index 00000000000..e49311f5b28 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv @@ -0,0 +1,10 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartTypeName" ,"PartName" ,"PartSequenceOrder","RID" ,"PreferredName" ,"RPID" ,"LongName" +"17787-3" ,"v2.67 NM Thyroid gland Study report","LP199995-4","Rad.Anatomic Location.Region Imaged","Neck" ,"A" ,"RID7488" ,"neck" ,"" ,"" +"17787-3" ,"v2.67 NM Thyroid gland Study report","LP206648-0","Rad.Anatomic Location.Imaging Focus","Thyroid gland" ,"A" ,"RID7578" ,"thyroid gland" ,"" ,"" +"17787-3" ,"v2.67 NM Thyroid gland Study report","LP208891-4","Rad.Modality.Modality type" ,"NM" ,"A" ,"RID10330","nuclear medicine imaging","" ,"" +"24531-6" ,"v2.67 US Retroperitoneum" ,"LP207608-3","Rad.Modality.Modality type" ,"US" ,"A" ,"RID10326","Ultrasound" ,"RPID2142","US Retroperitoneum" +"24531-6" ,"v2.67 US Retroperitoneum" ,"LP199943-4","Rad.Anatomic Location.Imaging Focus","Retroperitoneum" ,"A" ,"RID431" ,"RETROPERITONEUM" ,"RPID2142","US Retroperitoneum" +"24531-6" ,"v2.67 US Retroperitoneum" ,"LP199956-6","Rad.Anatomic Location.Region Imaged","Abdomen" ,"A" ,"RID56" ,"Abdomen" ,"RPID2142","US Retroperitoneum" +"24532-4" ,"v2.67 US Abdomen RUQ" ,"LP199956-6","Rad.Anatomic Location.Region Imaged","Abdomen" ,"A" ,"RID56" ,"Abdomen" ,"" ,"" +"24532-4" ,"v2.67 US Abdomen RUQ" ,"LP207608-3","Rad.Modality.Modality type" ,"US" ,"A" ,"RID10326","Ultrasound" ,"" ,"" +"24532-4" ,"v2.67 US Abdomen RUQ" ,"LP208105-9","Rad.Anatomic Location.Imaging Focus","Right upper quadrant","A" ,"RID29994","Right upper quadrant" ,"" ,"" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv new file mode 100644 index 00000000000..72d95485a58 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv @@ -0,0 +1,10 @@ +"LOINC_NUM","LONG_COMMON_NAME","ORDER_OBS" +"42176-8","1,3 beta glucan [Mass/volume] in Serum","Both" +"53835-5","1,5-Anhydroglucitol [Mass/volume] in Serum or Plasma","Both" +"31019-3","10-Hydroxycarbazepine [Mass/volume] in Serum or Plasma","Both" +"6765-2","17-Hydroxypregnenolone [Mass/volume] in Serum or Plasma","Both" +"1668-3","17-Hydroxyprogesterone [Mass/volume] in Serum or Plasma","Both" +"32854-2","17-Hydroxyprogesterone [Presence] in DBS","Both" +"49054-0","25-Hydroxycalciferol [Mass/volume] in Serum or Plasma","Both" +"62292-8","25-Hydroxyvitamin D2+25-Hydroxyvitamin D3 [Mass/volume] in Serum or Plasma","Both" +"44907-4","5-Hydroxyindoleacetate panel - 24 hour Urine","Order" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv new file mode 100644 index 00000000000..527b8fd5cae --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv @@ -0,0 +1,10 @@ +PATH_TO_ROOT,SEQUENCE,IMMEDIATE_PARENT,CODE,CODE_TEXT +,1,,LP31755-9,Microbiology +LP31755-9,1,LP31755-9,LP14559-6,Microorganism +LP31755-9.LP14559-6,1,LP14559-6,LP98185-9,Bacteria +LP31755-9.LP14559-6.LP98185-9,1,LP98185-9,LP14082-9,Bacteria +LP31755-9.LP14559-6.LP98185-9.LP14082-9,1,LP14082-9,LP52258-8,Bacteria | Body Fluid +LP31755-9.LP14559-6.LP98185-9.LP14082-9.LP52258-8,1,LP52258-8,41599-2,Bacteria Fld Ql Micro +LP31755-9.LP14559-6.LP98185-9.LP14082-9,2,LP14082-9,LP52260-4,Bacteria | Cerebral spinal fluid +LP31755-9.LP14559-6.LP98185-9.LP14082-9.LP52260-4,1,LP52260-4,41602-4,Bacteria CSF Ql Micro +LP31755-9.LP14559-6.LP98185-9.LP14082-9,3,LP14082-9,LP52960-9,Bacteria | Cervix diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PanelsAndForms/AnswerList.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PanelsAndForms/AnswerList.csv new file mode 100644 index 00000000000..12fb5f865de --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PanelsAndForms/AnswerList.csv @@ -0,0 +1,12 @@ +"AnswerListId","AnswerListName" ,"AnswerListOID" ,"ExtDefinedYN","ExtDefinedAnswerListCodeSystem","ExtDefinedAnswerListLink" ,"AnswerStringId","LocalAnswerCode","LocalAnswerCodeSystem","SequenceNumber","DisplayText" ,"ExtCodeId","ExtCodeDisplayName" ,"ExtCodeSystem" ,"ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" ,"SubsequentTextPrompt","Description","Score" +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13825-7" ,"1" , ,1 ,"v2.67 1 slice or 1 dinner roll" , , , , , , , , +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13838-0" ,"2" , ,2 ,"v2.67 2 slices or 2 dinner rolls" , , , , , , , , +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13892-7" ,"3" , ,3 ,"v2.67 More than 2 slices or 2 dinner rolls", , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA6270-8" ,"00" , ,1 ,"v2.67 Never" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13836-4" ,"01" , ,2 ,"v2.67 1-3 times per month" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13834-9" ,"02" , ,3 ,"v2.67 1-2 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13853-9" ,"03" , ,4 ,"v2.67 3-4 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13860-4" ,"04" , ,5 ,"v2.67 5-6 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13827-3" ,"05" , ,6 ,"v2.67 1 time per day" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA4389-8" ,"97" , ,11 ,"v2.67 Refused" ,"443390004","Refused (qualifier value)","http://snomed.info/sct","http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College", , , +"LL1892-0" ,"ICD-9_ICD-10" ,"1.3.6.1.4.1.12009.10.1.1069","Y" , ,"http://www.cdc.gov/nchs/icd.htm", , , , , , , , , , , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PanelsAndForms/Loinc.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PanelsAndForms/Loinc.csv new file mode 100644 index 00000000000..62a7af00421 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PanelsAndForms/Loinc.csv @@ -0,0 +1,16 @@ +"LOINC_NUM","COMPONENT" ,"PROPERTY","TIME_ASPCT","SYSTEM" ,"SCALE_TYP","METHOD_TYP" ,"CLASS" ,"VersionLastChanged","CHNG_TYPE","DefinitionDescription" ,"STATUS","CONSUMER_NAME","CLASSTYPE","FORMULA","SPECIES","EXMPL_ANSWERS","SURVEY_QUEST_TEXT" ,"SURVEY_QUEST_SRC" ,"UNITSREQUIRED","SUBMITTED_UNITS","RELATEDNAMES2" ,"SHORTNAME" ,"ORDER_OBS" ,"CDISC_COMMON_TESTS","HL7_FIELD_SUBFIELD_ID","EXTERNAL_COPYRIGHT_NOTICE" ,"EXAMPLE_UNITS","LONG_COMMON_NAME" ,"UnitsAndRange","DOCUMENT_SECTION","EXAMPLE_UCUM_UNITS","EXAMPLE_SI_UCUM_UNITS","STATUS_REASON","STATUS_TEXT","CHANGE_REASON_PUBLIC" ,"COMMON_TEST_RANK","COMMON_ORDER_RANK","COMMON_SI_TEST_RANK","HL7_ATTACHMENT_STRUCTURE","EXTERNAL_COPYRIGHT_LINK","PanelType","AskAtOrderEntry","AssociatedObservations" ,"VersionFirstReleased","ValidHL7AttachmentRequest" +"10013-1" ,"R' wave amplitude.lead I" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-I; R wave Amp L-I; Random; Right; Voltage" ,"R' wave Amp L-I" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead I" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10014-9" ,"R' wave amplitude.lead II" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"2; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-II; R wave Amp L-II; Random; Right; Voltage" ,"R' wave Amp L-II" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead II" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10015-6" ,"R' wave amplitude.lead III" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"3; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-III; R wave Amp L-III; Random; Right; Voltage" ,"R' wave Amp L-III" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead III" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10016-4" ,"R' wave amplitude.lead V1" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V1; R wave Amp L-V1; Random; Right; Voltage" ,"R' wave Amp L-V1" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V1" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"1001-7" ,"DBG Ab" ,"Pr" ,"Pt" ,"Ser/Plas^donor" ,"Ord" , ,"BLDBK" ,"2.44" ,"MIN" , ,"ACTIVE", ,1 , , , , , , , ,"ABS; Aby; Antby; Anti; Antibodies; Antibody; Autoantibodies; Autoantibody; BLOOD BANK; Donna Bennett-Goodspeed; Donr; Ordinal; Pl; Plasma; Plsm; Point in time; QL; Qual; Qualitative; Random; Screen; SerP; SerPl; SerPl^donor; SerPlas; Serum; Serum or plasma; SR" ,"DBG Ab SerPl Donr Ql" ,"Observation", , , , ,"DBG Ab [Presence] in Serum or Plasma from donor" , , , , , , ,"The Property has been changed from ACnc to Pr (Presence) to reflect the new model for ordinal terms where results are based on presence or absence." ,0 ,0 ,0 , , , , , , , +"10017-2" ,"R' wave amplitude.lead V2" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V2; R wave Amp L-V2; Random; Right; Voltage" ,"R' wave Amp L-V2" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V2" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10018-0" ,"R' wave amplitude.lead V3" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V3; R wave Amp L-V3; Random; Right; Voltage" ,"R' wave Amp L-V3" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V3" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10019-8" ,"R' wave amplitude.lead V4" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V4; R wave Amp L-V4; Random; Right; Voltage" ,"R' wave Amp L-V4" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V4" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10020-6" ,"R' wave amplitude.lead V5" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V5; R wave Amp L-V5; Random; Right; Voltage" ,"R' wave Amp L-V5" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V5" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Find" ,"Pt" ,"^Patient" ,"Ord" ,"PhenX" ,"PHENX" ,"2.44" ,"MIN" , ,"TRIAL" , ,2 , , , ,"Each time you eat bread, toast or dinner rolls, how much do you usually eat?","PhenX.050201100100","N" , ,"Finding; Findings; How much bread in 30D; Last; Ordinal; Point in time; QL; Qual; Qualitative; Random; Screen" ,"How much bread in 30D PhenX", , , , , ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]", , , , , , , ,0 ,0 ,0 , , , , , , , +"10000-8" ,"R wave duration.lead AVR" ,"Time" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; Durat; ECG; EKG.MEASUREMENTS; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave dur L-AVR; R wave dur L-AVR; Random; Right" ,"R wave dur L-AVR" ,"Observation", , , ,"s" ,"R wave duration in lead AVR" , , ,"s" , , , , ,0 ,0 ,0 , , , , , , , +"17787-3" ,"Study report" ,"Find" ,"Pt" ,"Neck>Thyroid gland","Doc" ,"NM" ,"RAD" ,"2.61" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Document; Finding; Findings; Imaging; Point in time; Radiology; Random; Study report; Thy" ,"NM Thyroid Study report" ,"Both" , , , , ,"v2.67 NM Thyroid gland Study report" , , , , , , ,"Changed System from ""Thyroid"" for conformance with the LOINC/RadLex unified model.; Method of ""Radnuc"" was changed to ""NM"". The LOINC/RadLex Committee agreed to use a subset of the two-letter DICOM modality codes as the primary modality identifier." ,0 ,0 ,0 ,"IG exists" , , , ,"81220-6;72230-6" ,"1.0l" , +"17788-1" ,"Large unstained cells/100 leukocytes" ,"NFr" ,"Pt" ,"Bld" ,"Qn" ,"Automated count","HEM/BC" ,"2.50" ,"MIN" ,"Part of auto diff output of Bayer H*3S; peroxidase negative cells too large to be classified as lymph or basophil" ,"ACTIVE", ,1 , , , , , ,"Y" ,"%" ,"100WBC; Auto; Automated detection; Blood; Cell; Cellularity; Elec; Elect; Electr; HEMATOLOGY/CELL COUNTS; Leuc; Leuk; Leukocyte; Lkcs; LUC; Number Fraction; Percent; Point in time; QNT; Quan; Quant; Quantitative; Random; WB; WBC; WBCs; White blood cell; White blood cells; Whole blood" ,"LUC/leuk NFr Bld Auto" ,"Observation", , , ,"%" ,"Large unstained cells/100 leukocytes in Blood by Automated count" , , ,"%" , , , , ,1894 ,0 ,1894 , , , , , ,"1.0l" , +"11488-4" ,"Consultation note" ,"Find" ,"Pt" ,"{Setting}" ,"Doc" ,"{Role}" ,"DOC.ONTOLOGY","2.63" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Consult note; DOC.ONT; Document; Encounter; Evaluation and management; Evaluation and management note; Finding; Findings; notes; Point in time; Random; Visit note" ,"Consult note" ,"Both" , , , , ,"Consult note" , , , , , , ,"Edit made because this term is conformant to the Document Ontology axis values and therefore are being placed in this class.; Based on Clinical LOINC Committee decision during the September 2014 meeting, {Provider} was changed to {Author Type} to emphasize a greater breadth of potential document authors. At the September 2015 Clinical LOINC Committee meeting, the Committee decided to change {Author Type} to {Role} to align with the 'Role' axis name in the LOINC Document Ontology.; Because it is too difficult to maintain and because the distinction between documents and sections is not clear-cut nor necessary in most cases, the DOCUMENT_SECTION field has been deemed to have little value. The field has been set to null in the December 2017 release in preparation for removal in the December 2018 release. These changes were approved by the Clinical LOINC Committee.",0 ,0 ,0 ,"IG exists" , , , ,"81222-2;72231-4;81243-8","1.0j-a" ,"Y" +"47239-9" ,"Reason for stopping HIV Rx" ,"Type" ,"Pt" ,"^Patient" ,"Nom" ,"Reported" ,"ART" ,"2.50" ,"MIN" ,"Reason for stopping antiretroviral therapy" ,"ACTIVE", ,2 , , , , , ,"N" , ,"AIDS; Anti-retroviral therapy; ART; Human immunodeficiency virus; Nominal; Point in time; Random; Treatment; Typ" ,"Reason for stopping HIV Rx" ,"Observation", , ,"Copyright © 2006 World Health Organization. Used with permission. Publications of the World Health Organization can be obtained from WHO Press, World Health Organization, 20 Avenue Appia, 1211 Geneva 27, Switzerland (tel: +41 22 791 2476; fax: +41 22 791 4857; email: bookorders@who.int). Requests for permission to reproduce or translate WHO publications – whether for sale or for noncommercial distribution – should be addressed to WHO Press, at the above address (fax: +41 22 791 4806; email: permissions@who.int). The designations employed and the presentation of the material in this publication do not imply the expression of any opinion whatsoever on the part of the World Health Organization concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries. Dotted lines on maps represent approximate border lines for which there may not yet be full agreement. The mention of specific companies or of certain manufacturers’ products does not imply that they are endorsed or recommended by the World Health Organization in preference to others of a similar nature that are not mentioned. Errors and omissions excepted, the names of proprietary products are distinguished by initial capital letters. All reasonable precautions have been taken by WHO to verify the information contained in this publication. However, the published material is being distributed without warranty of any kind, either express or implied. The responsibility for the interpretation and use of the material lies with the reader. In no event shall the World Health Organization be liable for damages arising from its use.", ,"Reason for stopping HIV treatment" , , , , , , , ,0 ,0 ,0 , ,"WHO_HIV" , , , ,"2.22" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv new file mode 100644 index 00000000000..820602c77ad --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv @@ -0,0 +1,11 @@ +"LoincNumber","LongCommonName" ,"AnswerListId","AnswerListName" ,"AnswerListLinkType","ApplicableContext" +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]","LL1000-0" ,"PhenX05_13_30D bread amt","NORMATIVE" , +"10061-0" ,"S' wave amplitude in lead I" ,"LL1311-1" ,"PhenX12_44" ,"EXAMPLE" , +"10331-7" ,"Rh [Type] in Blood" ,"LL360-9" ,"Pos|Neg" ,"EXAMPLE" , +"10389-5" ,"Blood product.other [Type]" ,"LL2413-4" ,"Othr bld prod" ,"EXAMPLE" , +"10390-3" ,"Blood product special preparation [Type]" ,"LL2422-5" ,"Blood prod treatment" ,"EXAMPLE" , +"10393-7" ,"Factor IX given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10395-2" ,"Factor VIII given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10401-8" ,"Immune serum globulin given [Type]" ,"LL2421-7" ,"IM/IV" ,"EXAMPLE" , +"10410-9" ,"Plasma given [Type]" ,"LL2417-5" ,"Plasma type" ,"EXAMPLE" , +"10568-4" ,"Clarity of Semen" ,"LL2427-4" ,"Clear/Opales/Milky" ,"EXAMPLE" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/LoincPartLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/LoincPartLink.csv new file mode 100644 index 00000000000..36c84f3fe95 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/LoincPartLink.csv @@ -0,0 +1,10 @@ +"LoincNumber","LongCommonName","PartNumber","PartName","PartCodeSystem","PartTypeName","LinkTypeName","Property" +"10013-1","R' wave amplitude in lead I","LP31101-6","R' wave amplitude.lead I","http://loinc.org","COMPONENT","Primary","http://loinc.org/property/COMPONENT" +"10013-1","R' wave amplitude in lead I","LP6802-5","Elpot","http://loinc.org","PROPERTY","Primary","http://loinc.org/property/PROPERTY" +"10013-1","R' wave amplitude in lead I","LP6960-1","Pt","http://loinc.org","TIME","Primary","http://loinc.org/property/TIME_ASPCT" +"10013-1","R' wave amplitude in lead I","LP7289-4","Heart","http://loinc.org","SYSTEM","Primary","http://loinc.org/property/SYSTEM" +"10013-1","R' wave amplitude in lead I","LP7753-9","Qn","http://loinc.org","SCALE","Primary","http://loinc.org/property/SCALE_TYP" +"10013-1","R' wave amplitude in lead I","LP6244-0","EKG","http://loinc.org","METHOD","Primary","http://loinc.org/property/METHOD_TYP" +"10013-1","R' wave amplitude in lead I","LP31101-6","R' wave amplitude.lead I","http://loinc.org","COMPONENT","DetailedModel","http://loinc.org/property/analyte" +"10013-1","R' wave amplitude in lead I","LP6802-5","Elpot","http://loinc.org","PROPERTY","DetailedModel","http://loinc.org/property/PROPERTY" +"10013-1","R' wave amplitude in lead I","LP6960-1","Pt","http://loinc.org","TIME","DetailedModel","http://loinc.org/property/time-core" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/LoincPartLink_Primary.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/LoincPartLink_Primary.csv new file mode 100644 index 00000000000..8dbe575ffd2 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/LoincPartLink_Primary.csv @@ -0,0 +1,7 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartName" ,"PartCodeSystem" ,"PartTypeName","LinkTypeName","Property" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"Primary" ,"http://loinc.org/property/COMPONENT" +"10013-1" ,"R' wave amplitude in lead I","LP6802-5" ,"Elpot" ,"http://loinc.org","PROPERTY" ,"Primary" ,"http://loinc.org/property/PROPERTY" +"10013-1" ,"R' wave amplitude in lead I","LP6960-1" ,"Pt" ,"http://loinc.org","TIME" ,"Primary" ,"http://loinc.org/property/TIME_ASPCT" +"10013-1" ,"R' wave amplitude in lead I","LP7289-4" ,"Heart" ,"http://loinc.org","SYSTEM" ,"Primary" ,"http://loinc.org/property/SYSTEM" +"10013-1" ,"R' wave amplitude in lead I","LP7753-9" ,"Qn" ,"http://loinc.org","SCALE" ,"Primary" ,"http://loinc.org/property/SCALE_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP6244-0" ,"EKG" ,"http://loinc.org","METHOD" ,"Primary" ,"http://loinc.org/property/METHOD_TYP" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv new file mode 100644 index 00000000000..869c2c1651d --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv @@ -0,0 +1,13 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartName" ,"PartCodeSystem" ,"PartTypeName","LinkTypeName" ,"Property" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"DetailedModel" ,"http://loinc.org/property/analyte" +"10013-1" ,"R' wave amplitude in lead I","LP6802-5" ,"Elpot" ,"http://loinc.org","PROPERTY" ,"DetailedModel" ,"http://loinc.org/property/PROPERTY" +"10013-1" ,"R' wave amplitude in lead I","LP6960-1" ,"Pt" ,"http://loinc.org","TIME" ,"DetailedModel" ,"http://loinc.org/property/time-core" +"10013-1" ,"R' wave amplitude in lead I","LP7289-4" ,"Heart" ,"http://loinc.org","SYSTEM" ,"DetailedModel" ,"http://loinc.org/property/system-core" +"10013-1" ,"R' wave amplitude in lead I","LP7753-9" ,"Qn" ,"http://loinc.org","SCALE" ,"DetailedModel" ,"http://loinc.org/property/SCALE_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP6244-0" ,"EKG" ,"http://loinc.org","METHOD" ,"DetailedModel" ,"http://loinc.org/property/METHOD_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"SyntaxEnhancement","http://loinc.org/property/analyte-core" +"10013-1" ,"R' wave amplitude in lead I","LP190563-9","Cardiology" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP29708-2" ,"Cardiology" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7787-7" ,"Clinical" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7795-0" ,"EKG measurements" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7795-0" ,"EKG.MEAS" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/CLASS" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/Part.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/Part.csv new file mode 100644 index 00000000000..d5816ead286 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/Part.csv @@ -0,0 +1,46 @@ +"PartNumber","PartTypeName","PartName","PartDisplayName","Status" +"LP101394-7","ADJUSTMENT","adjusted for maternal weight","adjusted for maternal weight","ACTIVE" +"LP101907-6","ADJUSTMENT","corrected for age","corrected for age","ACTIVE" +"LP115711-6","ADJUSTMENT","corrected for background","corrected for background","ACTIVE" +"LP147359-6","ADJUSTMENT","adjusted for body weight","adjusted for body weight","ACTIVE" +"LP173482-3","ADJUSTMENT","1st specimen","1st specimen","DEPRECATED" +"LP173483-1","ADJUSTMENT","post cyanocobalamin",,"ACTIVE" +"LP173484-9","ADJUSTMENT","W hyperextension)",,"ACTIVE" +"LP6244-0","METHOD","EKG","Electrocardiogram (EKG)","ACTIVE" +"LP18172-4","COMPONENT","Interferon.beta","Interferon beta","ACTIVE" +"LP7289-4","SYSTEM","Heart","Heart","ACTIVE" +"LP6960-1","TIME","Pt","Point in time (spot)","ACTIVE" +"LP6802-5","PROPERTY","Elpot","Electrical Potential (Voltage)","ACTIVE" +"LP7753-9","SCALE","Qn","Qn","ACTIVE" +"LP31101-6","COMPONENT","R' wave amplitude.lead I","R' wave amplitude.lead I","ACTIVE" +"LP31102-4","COMPONENT","R' wave amplitude.lead II","R' wave amplitude.lead II","ACTIVE" +"LP31103-2","COMPONENT","R' wave amplitude.lead III","R' wave amplitude.lead III","ACTIVE" +"LP31104-0","COMPONENT","R' wave amplitude.lead V1","R' wave amplitude.lead V1","ACTIVE" +"LP31105-7","COMPONENT","R' wave amplitude.lead V2","R' wave amplitude.lead V2","ACTIVE" +"LP31106-5","COMPONENT","R' wave amplitude.lead V3","R' wave amplitude.lead V3","ACTIVE" +"LP31107-3","COMPONENT","R' wave amplitude.lead V4","R' wave amplitude.lead V4","ACTIVE" +"LP31108-1","COMPONENT","R' wave amplitude.lead V5","R' wave amplitude.lead V5","ACTIVE" +"LP31109-9","COMPONENT","R' wave amplitude.lead V6","R' wave amplitude.lead V6","ACTIVE" +"LP31110-7","COMPONENT","R' wave duration.lead AVF","R' wave duration.lead AVF","ACTIVE" +"LP30269-2","SYSTEM","Ser/Plas^donor",,"ACTIVE" +"LP149220-8","PROPERTY","Pr","Presence","ACTIVE" +"LP7751-3","SCALE","Ord","Ord","ACTIVE" +"LP37904-7","COMPONENT","DBG Ab","DBG Ab","ACTIVE" +"LP6813-2","PROPERTY","Find","Finding","ACTIVE" +"LP95333-8","METHOD","PhenX","PhenX","ACTIVE" +"LP102627-9","COMPONENT","Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days","ACTIVE" +"LP6879-3","PROPERTY","Time","Time (e.g. seconds)","ACTIVE" +"LP31088-5","COMPONENT","R wave duration.lead AVR","R wave duration.lead AVR","ACTIVE" +"LP206647-2","SYSTEM","Neck>Thyroid gland","Thyroid gland","ACTIVE" +"LP208655-3","METHOD","NM","NM","ACTIVE" +"LP32888-7","SCALE","Doc","Doc","ACTIVE" +"LP31534-8","COMPONENT","Study report","Study report","ACTIVE" +"LP7057-5","SYSTEM","Bld","Blood","ACTIVE" +"LP6838-9","PROPERTY","NFr","Number Fraction","ACTIVE" +"LP6141-8","METHOD","Automated count","Automated count","ACTIVE" +"LP15842-5","COMPONENT","Pyridoxine","Pyridoxine","ACTIVE" +"LP19258-0","COMPONENT","Large unstained cells","Large unstained cells","ACTIVE" +"LP32887-9","SYSTEM","{Setting}","{Setting}","ACTIVE" +"LP187178-1","METHOD","{Role}","Role-unspecified","ACTIVE" +"LP72311-1","COMPONENT","Consultation note","Consultation note","ACTIVE" + diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv new file mode 100644 index 00000000000..495416894ce --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv @@ -0,0 +1,12 @@ +"PartNumber","PartName" ,"PartTypeName","ExtCodeId" ,"ExtCodeDisplayName" ,"ExtCodeSystem" ,"Equivalence","ContentOrigin","ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" +"LP18172-4" ,"Interferon.beta" ,"COMPONENT" ," 420710006","Interferon beta (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP31706-2" ,"Nornicotine" ,"COMPONENT" ,"1018001" ,"Nornicotine (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15826-8" ,"Prostaglandin F2","COMPONENT" ,"10192006" ,"Prostaglandin PGF2 (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP7400-7" ,"Liver" ,"SYSTEM" ,"10200004" ,"Liver structure (body structure)","http://snomed.info/sct" ,"wider" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP29165-5" ,"Liver.FNA" ,"SYSTEM" ,"10200004" ,"Liver structure (body structure)","http://snomed.info/sct" ,"narrower" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15666-8" ,"Inosine" ,"COMPONENT" ,"102640000" ,"Inosine (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15943-1" ,"Uronate" ,"COMPONENT" ,"102641001" ,"Uronic acid (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15791-4" ,"Phenylketones" ,"COMPONENT" ,"102642008" ,"Phenylketones (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15721-1" ,"Malonate" ,"COMPONENT" ,"102648007" ,"Malonic acid (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15842-5" ,"Pyridoxine" ,"COMPONENT" ,"1054" ,"Pyridoxine" ,"http://pubchem.ncbi.nlm.nih.gov","equivalent" , , , +"LP15842-5" ,"Pyridoxine" ,"COMPONENT" ,"1054" ,"Pyridoxine" ,"http://foo/bar" ,"equivalent" , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv new file mode 100644 index 00000000000..1e9b3872892 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv @@ -0,0 +1,10 @@ +LOINC #,Long Common Name,Short Name,CLASS,Rank +14682-9,Creatinine [Moles/volume] in Serum or Plasma,Creat SerPl-mCnc,Chem,1 +718-7,Hemoglobin [Mass/volume] in Blood,Hgb Bld-mCnc,HEM/BC,2 +2823-3,Potassium [Moles/volume] in Serum or Plasma,Potassium SerPl-sCnc,Chem,3 +14749-6,Glucose [Moles/volume] in Serum or Plasma,Glucose SerPl-mCnc,Chem,4 +2951-2,Sodium [Moles/volume] in Serum or Plasma,Sodium SerPl-sCnc,Chem,5 +3094-0,Urea nitrogen [Mass/volume] in Serum or Plasma,BUN SerPl-mCnc,Chem,6 +2028-9,"Carbon dioxide, total [Moles/volume] in Serum or Plasma",CO2 SerPl-sCnc,Chem,7 +2075-0,Chloride [Moles/volume] in Serum or Plasma,Chloride SerPl-sCnc,Chem,8 +789-8,Erythrocytes [#/volume] in Blood by Automated count,RBC # Bld Auto,HEM/BC,9 diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv new file mode 100644 index 00000000000..c80db052dd3 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv @@ -0,0 +1,10 @@ +LOINC #,Long Common Name,Short Name,CLASS,Rank +2160-0,Creatinine [Mass/volume] in Serum or Plasma,Creat SerPl-mCnc,Chem,1 +718-7,Hemoglobin [Mass/volume] in Blood,Hgb Bld-mCnc,HEM/BC,2 +2823-3,Potassium [Moles/volume] in Serum or Plasma,Potassium SerPl-sCnc,Chem,3 +2345-7,Glucose [Mass/volume] in Serum or Plasma,Glucose SerPl-mCnc,Chem,4 +2951-2,Sodium [Moles/volume] in Serum or Plasma,Sodium SerPl-sCnc,Chem,5 +3094-0,Urea nitrogen [Mass/volume] in Serum or Plasma,BUN SerPl-mCnc,Chem,6 +2028-9,"Carbon dioxide, total [Moles/volume] in Serum or Plasma",CO2 SerPl-sCnc,Chem,7 +2075-0,Chloride [Moles/volume] in Serum or Plasma,Chloride SerPl-sCnc,Chem,8 +789-8,Erythrocytes [#/volume] in Blood by Automated count,RBC # Bld Auto,HEM/BC,9 diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/LoincTable/Loinc.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/LoincTable/Loinc.csv new file mode 100644 index 00000000000..1998b5c00e5 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/LoincTable/Loinc.csv @@ -0,0 +1,16 @@ +"LOINC_NUM","COMPONENT" ,"PROPERTY","TIME_ASPCT","SYSTEM" ,"SCALE_TYP","METHOD_TYP" ,"CLASS" ,"VersionLastChanged","CHNG_TYPE","DefinitionDescription" ,"STATUS","CONSUMER_NAME","CLASSTYPE","FORMULA","SPECIES","EXMPL_ANSWERS","SURVEY_QUEST_TEXT" ,"SURVEY_QUEST_SRC" ,"UNITSREQUIRED","SUBMITTED_UNITS","RELATEDNAMES2" ,"SHORTNAME" ,"ORDER_OBS" ,"CDISC_COMMON_TESTS","HL7_FIELD_SUBFIELD_ID","EXTERNAL_COPYRIGHT_NOTICE" ,"EXAMPLE_UNITS","LONG_COMMON_NAME" ,"UnitsAndRange","DOCUMENT_SECTION","EXAMPLE_UCUM_UNITS","EXAMPLE_SI_UCUM_UNITS","STATUS_REASON","STATUS_TEXT","CHANGE_REASON_PUBLIC" ,"COMMON_TEST_RANK","COMMON_ORDER_RANK","COMMON_SI_TEST_RANK","HL7_ATTACHMENT_STRUCTURE","EXTERNAL_COPYRIGHT_LINK","PanelType","AskAtOrderEntry","AssociatedObservations" ,"VersionFirstReleased","ValidHL7AttachmentRequest" +"10013-1" ,"v2.67 R' wave amplitude.lead I" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-I; R wave Amp L-I; Random; Right; Voltage" ,"R' wave Amp L-I" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead I" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10014-9" ,"v2.67 R' wave amplitude.lead II" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"2; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-II; R wave Amp L-II; Random; Right; Voltage" ,"R' wave Amp L-II" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead II" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10015-6" ,"v2.67 R' wave amplitude.lead III" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"3; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-III; R wave Amp L-III; Random; Right; Voltage" ,"R' wave Amp L-III" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead III" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10016-4" ,"v2.67 R' wave amplitude.lead V1" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V1; R wave Amp L-V1; Random; Right; Voltage" ,"R' wave Amp L-V1" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V1" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"1001-7" ,"v2.67 DBG Ab" ,"Pr" ,"Pt" ,"Ser/Plas^donor" ,"Ord" , ,"BLDBK" ,"2.44" ,"MIN" , ,"ACTIVE", ,1 , , , , , , , ,"ABS; Aby; Antby; Anti; Antibodies; Antibody; Autoantibodies; Autoantibody; BLOOD BANK; Donna Bennett-Goodspeed; Donr; Ordinal; Pl; Plasma; Plsm; Point in time; QL; Qual; Qualitative; Random; Screen; SerP; SerPl; SerPl^donor; SerPlas; Serum; Serum or plasma; SR" ,"DBG Ab SerPl Donr Ql" ,"Observation", , , , ,"DBG Ab [Presence] in Serum or Plasma from donor" , , , , , , ,"The Property has been changed from ACnc to Pr (Presence) to reflect the new model for ordinal terms where results are based on presence or absence." ,0 ,0 ,0 , , , , , , , +"10017-2" ,"v2.67 R' wave amplitude.lead V2" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V2; R wave Amp L-V2; Random; Right; Voltage" ,"R' wave Amp L-V2" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V2" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10018-0" ,"v2.67 R' wave amplitude.lead V3" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V3; R wave Amp L-V3; Random; Right; Voltage" ,"R' wave Amp L-V3" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V3" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10019-8" ,"v2.67 R' wave amplitude.lead V4" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V4; R wave Amp L-V4; Random; Right; Voltage" ,"R' wave Amp L-V4" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V4" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10020-6" ,"v2.67 R' wave amplitude.lead V5" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V5; R wave Amp L-V5; Random; Right; Voltage" ,"R' wave Amp L-V5" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V5" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"61438-8" ,"v2.67 Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Find" ,"Pt" ,"^Patient" ,"Ord" ,"PhenX" ,"PHENX" ,"2.44" ,"MIN" , ,"TRIAL" , ,2 , , , ,"Each time you eat bread, toast or dinner rolls, how much do you usually eat?","PhenX.050201100100","N" , ,"Finding; Findings; How much bread in 30D; Last; Ordinal; Point in time; QL; Qual; Qualitative; Random; Screen" ,"How much bread in 30D PhenX", , , , , ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]", , , , , , , ,0 ,0 ,0 , , , , , , , +"10000-8" ,"v2.67 R wave duration.lead AVR" ,"Time" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; Durat; ECG; EKG.MEASUREMENTS; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave dur L-AVR; R wave dur L-AVR; Random; Right" ,"R wave dur L-AVR" ,"Observation", , , ,"s" ,"R wave duration in lead AVR" , , ,"s" , , , , ,0 ,0 ,0 , , , , , , , +"17787-3" ,"v2.67 Study report" ,"Find" ,"Pt" ,"Neck>Thyroid gland","Doc" ,"NM" ,"RAD" ,"2.61" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Document; Finding; Findings; Imaging; Point in time; Radiology; Random; Study report; Thy" ,"NM Thyroid Study report" ,"Both" , , , , ,"v2.67 NM Thyroid gland Study report" , , , , , , ,"Changed System from ""Thyroid"" for conformance with the LOINC/RadLex unified model.; Method of ""Radnuc"" was changed to ""NM"". The LOINC/RadLex Committee agreed to use a subset of the two-letter DICOM modality codes as the primary modality identifier." ,0 ,0 ,0 ,"IG exists" , , , ,"81220-6;72230-6" ,"1.0l" , +"17788-1" ,"v2.67 Large unstained cells/100 leukocytes" ,"NFr" ,"Pt" ,"Bld" ,"Qn" ,"Automated count","HEM/BC" ,"2.50" ,"MIN" ,"Part of auto diff output of Bayer H*3S; peroxidase negative cells too large to be classified as lymph or basophil" ,"ACTIVE", ,1 , , , , , ,"Y" ,"%" ,"100WBC; Auto; Automated detection; Blood; Cell; Cellularity; Elec; Elect; Electr; HEMATOLOGY/CELL COUNTS; Leuc; Leuk; Leukocyte; Lkcs; LUC; Number Fraction; Percent; Point in time; QNT; Quan; Quant; Quantitative; Random; WB; WBC; WBCs; White blood cell; White blood cells; Whole blood" ,"LUC/leuk NFr Bld Auto" ,"Observation", , , ,"%" ,"Large unstained cells/100 leukocytes in Blood by Automated count" , , ,"%" , , , , ,1894 ,0 ,1894 , , , , , ,"1.0l" , +"11488-4" ,"v2.67 Consultation note" ,"Find" ,"Pt" ,"{Setting}" ,"Doc" ,"{Role}" ,"DOC.ONTOLOGY","2.63" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Consult note; DOC.ONT; Document; Encounter; Evaluation and management; Evaluation and management note; Finding; Findings; notes; Point in time; Random; Visit note" ,"Consult note" ,"Both" , , , , ,"Consult note" , , , , , , ,"Edit made because this term is conformant to the Document Ontology axis values and therefore are being placed in this class.; Based on Clinical LOINC Committee decision during the September 2014 meeting, {Provider} was changed to {Author Type} to emphasize a greater breadth of potential document authors. At the September 2015 Clinical LOINC Committee meeting, the Committee decided to change {Author Type} to {Role} to align with the 'Role' axis name in the LOINC Document Ontology.; Because it is too difficult to maintain and because the distinction between documents and sections is not clear-cut nor necessary in most cases, the DOCUMENT_SECTION field has been deemed to have little value. The field has been set to null in the December 2017 release in preparation for removal in the December 2018 release. These changes were approved by the Clinical LOINC Committee.",0 ,0 ,0 ,"IG exists" , , , ,"81222-2;72231-4;81243-8","1.0j-a" ,"Y" +"47239-9" ,"v2.67 Reason for stopping HIV Rx" ,"Type" ,"Pt" ,"^Patient" ,"Nom" ,"Reported" ,"ART" ,"2.50" ,"MIN" ,"Reason for stopping antiretroviral therapy" ,"ACTIVE", ,2 , , , , , ,"N" , ,"AIDS; Anti-retroviral therapy; ART; Human immunodeficiency virus; Nominal; Point in time; Random; Treatment; Typ" ,"Reason for stopping HIV Rx" ,"Observation", , ,"Copyright © 2006 World Health Organization. Used with permission. Publications of the World Health Organization can be obtained from WHO Press, World Health Organization, 20 Avenue Appia, 1211 Geneva 27, Switzerland (tel: +41 22 791 2476; fax: +41 22 791 4857; email: bookorders@who.int). Requests for permission to reproduce or translate WHO publications – whether for sale or for noncommercial distribution – should be addressed to WHO Press, at the above address (fax: +41 22 791 4806; email: permissions@who.int). The designations employed and the presentation of the material in this publication do not imply the expression of any opinion whatsoever on the part of the World Health Organization concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries. Dotted lines on maps represent approximate border lines for which there may not yet be full agreement. The mention of specific companies or of certain manufacturers’ products does not imply that they are endorsed or recommended by the World Health Organization in preference to others of a similar nature that are not mentioned. Errors and omissions excepted, the names of proprietary products are distinguished by initial capital letters. All reasonable precautions have been taken by WHO to verify the information contained in this publication. However, the published material is being distributed without warranty of any kind, either express or implied. The responsibility for the interpretation and use of the material lies with the reader. In no event shall the World Health Organization be liable for damages arising from its use.", ,"Reason for stopping HIV treatment" , , , , , , , ,0 ,0 ,0 , ,"WHO_HIV" , , , ,"2.22" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/loinc.xml b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/loinc.xml new file mode 100644 index 00000000000..46e29461fbb --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v267/loinc.xml @@ -0,0 +1,543 @@ +<!-- +LOINC is a freely available international standard for tests, measurements, and observations. It is a well maintained, version independent code system. + +Use of LOINC is governed by the LOINC License: https://loinc.org/license/ + +This CodeSystem resource describes 'LOINC' independent of any particular version. There are notes about changes for version specific LOINC code system resources. + +Note that the following set of codes are defined by the LOINC code systems: + - the main LOINC codes + - the LOINC Answer codes (LA) and the LOINC Answer list codes (LL) + - the LOINC Part codes (LP) in the Multiaxial Hierarchy + - the LOINC Part codes (LP) for the properties + Note: there are license restrictions on the use of LOINC Part codes + - the LOINC Group codes (LG) + Note: presently the LOINC Group codes are used to identify these roll-up groups as ValueSets, but are not yet loaded as codes in the CodeSystem + +Servers may generate variants of this for the LOINC version(s) and features they support. + +--> + +<CodeSystem xmlns="http://hl7.org/fhir"> + <id value="loinc"/> + + <!-- + This url is unchanged for all versions of LOINC. There can only be one correct Code System resource for each value of the version attribute (at least, only one per server). + --> + <url value="http://loinc.org"/> + + <!-- the HL7 v3 OID assigned to LOINC --> + <identifier> + <system value="urn:ietf:rfc:3986"/> + <value value="urn:oid:2.16.840.1.113883.6.1"/> + </identifier> + +<!-- <version value="2.67"/>--> + + <!-- + If a specific version is specified, the name should carry this information (e.g. LOINC_270). + --> + <name value="LOINC"/> + <title value="LOINC Code System (Testing Copy)"/> + <status value="active"/> + <experimental value="false"/> + + <publisher value="Regenstrief Institute, Inc."/> + <contact> + <telecom> + <system value="url" /> + <value value="http://loinc.org"/> + </telecom> + </contact> + + <!-- + <date value=2021-06/> + --> + <description value="LOINC is a freely available international standard for tests, measurements, and observations"/> + <copyright value="This material contains content from LOINC (http://loinc.org). LOINC is copyright ©1995-2021, Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee and is available at no cost under the license at http://loinc.org/license. LOINC® is a registered United States trademark of Regenstrief Institute, Inc."/> + <caseSensitive value="false"/> + + <valueSet value="http://loinc.org/vs"/> + + <!-- + It's at the discretion of servers whether to present fragments of LOINC hierarchically or not, when using the code system resource. But, if they are hierarchical, the Hierarchy SHALL be based on the is-a relationship that is derived from the LOINC Multiaxial Hierarchy. + --> + <hierarchyMeaning value="is-a"/> + <compositional value="false"/> <!-- no compositional grammar in LOINC --> + <versionNeeded value="false"/> + + <!-- + This canonical definition of LOINC does not include the LOINC content, which is distributed separately for portability. + + Servers may choose to include fragments of LOINC for illustration purposes. + --> + <content value="not-present"/> + + <!-- + <count value="65000"/> + If working with a specific version, you could nominate a count of the total number of concepts (including the answers, Hierarchy, etc.). In this canonical definition we do not. + --> + + <!-- + FILTERS + Generally defined filters for specifying value sets + In LOINC, all the properties can also be used as filters, but they are not defined explicitly as filters. + Parent/child properties are as defined by FHIR. Note that at this time the LOINC code system resource does not support ancestor/descendant relationships. + + For illustration purposes, consider this slice of the LOINC Multiaxial Hierarchy when reading the descriptions below: + + Laboratory [LP29693-6] + Microbiology and Antimicrobial susceptibility [LP343406-7] + Microbiology [LP7819-8] + Microorganism [LP14559-6] + Virus [LP14855-8] + Zika virus [LP200137-0] + Zika virus RNA | XXX [LP203271-4] + Zika virus RNA | XXX | Microbiology [LP379670-5] + Zika virus RNA [Presence] in Unspecified specimen by Probe and target amplification method [79190-5] + + Language Note: The filters defined here are specified using the default LOINC language - English (US). Requests are meant to be specified and interpreted on the English version. The return can be in a specified language (if supported by the server). But note that not all filters/properties have language translations available. + --> + <filter> + <code value="parent"/> + <description value="Allows for the selection of a set of codes based on their appearance in the LOINC Multiaxial Hierarchy. Parent selects immediate parent only. For example, the code '79190-5' has the parent 'LP379670-5'"/> + <operator value="="/> + <value value="A Part code"/> + </filter> + <filter> + <code value="child"/> + <description value="Allows for the selection of a set of codes based on their appearance in the LOINC Multiaxial Hierarchy. Child selects immediate children only. For example, the code 'LP379670-5' has the child '79190-5'. Only LOINC Parts have children; LOINC codes do not have any children because they are leaf nodes."/> + <operator value="="/> + <value value="A comma separated list of Part or LOINC codes"/> + </filter> + <filter> + <code value="copyright"/> + <description value="Allows for the inclusion or exclusion of LOINC codes that include 3rd party copyright notices. LOINC = only codes with a sole copyright by Regenstrief. 3rdParty = only codes with a 3rd party copyright in addition to the one from Regenstrief"/> + <operator value="="/> + <value value="LOINC | 3rdParty"/> + </filter> + + <!-- + PROPERTIES + There are 4 kinds of properties that apply to all LOINC codes: + 1. FHIR: display, designation; these are not described here since they are inherent in the specification + 2. Infrastructural: defined by FHIR, but documented here for the LOINC Multiaxial Hierarchy + 3. Primary LOINC properties: defined by the main LOINC table + 4. Secondary LOINC properties: defined by the LoincPartLink table + Additionally, there are 2 kinds of properties specific to Document ontology and Radiology codes, respectively: + 1. LOINC/RSNA Radiology Playbook properties + 2. Document Ontology properties + --> + <!-- + Infrastructural properties - inherited from FHIR, but documented here for the LOINC Multiaxial Hierarchy. + --> + + <property> + <code value="parent"/> + <uri value="http://hl7.org/fhir/concept-properties#parent"/> + <description value="A parent code in the Multiaxial Hierarchy"/> + <type value="code"/> + </property> + <property> + <code value="child"/> + <uri value="http://hl7.org/fhir/concept-properties#child"/> + <description value="A child code in the Multiaxial Hierarchy"/> + <type value="code"/> + </property> + + <!-- + Primary LOINC properties. + These apply to the main LOINC codes, but not the Multiaxial Hierarchy, Answer lists, or the Part codes. + Notes: + In the LOINC code system resource, the display element = LONG_COMMON_NAME + Many properties are specified as type "Coding", which allows use of LOINC Part codes (LP-) and the display text. LOINC Parts and their associations to LOINC terms are published in the LOINC Part File. + The properties defined here follow the guidance of the LOINC Users' Guide, which states that they should be expressed with the LOINC attributes contained in the LOINC Table. Properties that are not defined in the LOINC Table use FHIR-styled names. + --> + + <property> + <code value="STATUS"/> + <uri value="http://loinc.org/property/STATUS"/> + <description value="Status of the term. Within LOINC, codes with STATUS=DEPRECATED are considered inactive. Current values: ACTIVE, TRIAL, DISCOURAGED, and DEPRECATED"/> + <type value="string"/> + </property> + <property> + <code value="COMPONENT"/> + <uri value="http://loinc.org/property/COMPONENT"/> + <description value="First major axis-component or analyte: Analyte Name, Analyte sub-class, Challenge"/> + <type value="Coding"/> + </property> + <property> + <code value="PROPERTY"/> + <uri value="http://loinc.org/property/PROPERTY"/> + <description value="Second major axis-property observed: Kind of Property (also called kind of quantity)"/> + <type value="Coding"/> + </property> + <property> + <code value="TIME_ASPCT"/> + <uri value="http://loinc.org/property/TIME_ASPCT"/> + <description value="Third major axis-timing of the measurement: Time Aspect (Point or moment in time vs. time interval)"/> + <type value="Coding"/> + </property> + <property> + <code value="SYSTEM"/> + <uri value="http://loinc.org/property/SYSTEM"/> + <description value="Fourth major axis-type of specimen or system: System (Sample) Type"/> + <type value="Coding"/> + </property> + <property> + <code value="SCALE_TYP"/> + <uri value="http://loinc.org/property/SCALE_TYP"/> + <description value="Fifth major axis-scale of measurement: Type of Scale"/> + <type value="Coding"/> + </property> + <property> + <code value="METHOD_TYP"/> + <uri value="http://loinc.org/property/METHOD_TYP"/> + <description value="Sixth major axis-method of measurement: Type of Method"/> + <type value="Coding"/> + </property> + <property> + <code value="CLASS"/> + <uri value="http://loinc.org/property/CLASS"/> + <description value="An arbitrary classification of terms for grouping related observations together"/> + <type value="Coding"/> + </property> + <property> + <code value="VersionLastChanged"/> + <uri value="http://loinc.org/property/VersionLastChanged"/> + <description value="The LOINC version number in which the record has last changed. For new records, this field contains the same value as the VersionFirstReleased property."/> + <type value="string"/> + </property> + <property> + <code value="CLASSTYPE"/> + <uri value="http://loinc.org/property/CLASSTYPE"/> + <description value="1=Laboratory class; 2=Clinical class; 3=Claims attachments; 4=Surveys"/> + <type value="string"/> + </property> + <property> + <code value="ORDER_OBS"/> + <uri value="http://loinc.org/property/ORDER_OBS"/> + <description value="Provides users with an idea of the intended use of the term by categorizing it as an order only, observation only, or both"/> + <type value="string"/> + </property> + <property> + <code value="HL7_ATTACHMENT_STRUCTURE"/> + <uri value="http://loinc.org/property/HL7_ATTACHMENT_STRUCTURE"/> + <description value="This property is populated in collaboration with the HL7 Payer-Provider Exchange (PIE) Work Group (previously called Attachments Work Group) as described in the HL7 Attachment Specification: Supplement to Consolidated CDA Templated Guide."/> + <type value="string"/> + </property> + <property> + <code value="VersionFirstReleased"/> + <uri value="http://loinc.org/property/VersionFirstReleased"/> + <description value="This is the LOINC version number in which this LOINC term was first published."/> + <type value="string"/> + </property> + <property> + <code value="PanelType"/> + <uri value="http://loinc.org/property/PanelType"/> + <description value="For LOINC terms that are panels, this attribute classifies them as a 'Convenience group', 'Organizer', or 'Panel'"/> + <type value="string"/> + </property> + <property> + <code value="ValidHL7AttachmentRequest"/> + <uri value="http://loinc.org/property/ValidHL7AttachmentRequest"/> + <description value="A value of Y in this field indicates that this LOINC code can be sent by a payer as part of an HL7 Attachment request for additional information."/> + <type value="string"/> + </property> + <property> + <code value="DisplayName"/> + <uri value="http://loinc.org/property/DisplayName"/> + <description value="A name that is more 'clinician-friendly' compared to the current LOINC Short Name, Long Common Name, and Fully Specified Name. It is created algorithmically from the manually crafted display text for each Part and is generally more concise than the Long Common Name."/> + <type value="string"/> + </property> + <property> + <code value="answer-list"/> + <uri value="http://loinc.org/property/answer-list"/> + <description value="An answer list associated with this LOINC code (if there are matching answer lists defined)."/> + <type value="Coding"/> + </property> + + <!-- + Secondary LOINC properties. + These properties also apply to the main LOINC codes, but not the Multiaxial Hierarchy, Answer lists, or the Part codes. + Notes: + These properties are defined in the LoincPartLink table. + --> + + <property> + <code value="analyte"/> + <uri value="http://loinc.org/property/analyte"/> + <description value="First sub-part of the Component, i.e., the part of the Component before the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-core"/> + <uri value="http://loinc.org/property/analyte-core"/> + <description value="The primary part of the analyte without the suffix"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-suffix"/> + <uri value="http://loinc.org/property/analyte-suffix"/> + <description value="The suffix part of the analyte, if present, e.g., Ab or DNA"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-numerator"/> + <uri value="http://loinc.org/property/analyte-numerator"/> + <description value="The numerator part of the analyte, i.e., everything before the slash in analytes that contain a divisor"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-divisor"/> + <uri value="http://loinc.org/property/analyte-divisor"/> + <description value="The divisor part of the analyte, if present, i.e., after the slash and before the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-divisor-suffix"/> + <uri value="http://loinc.org/property/analyte-divisor-suffix"/> + <description value="The suffix part of the divisor, if present"/> + <type value="Coding"/> + </property> + <property> + <code value="challenge"/> + <uri value="http://loinc.org/property/challenge"/> + <description value="Second sub-part of the Component, i.e., after the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="adjustment"/> + <uri value="http://loinc.org/property/adjustment"/> + <description value="Third sub-part of the Component, i.e., after the second carat"/> + <type value="Coding"/> + </property> + <property> + <code value="count"/> + <uri value="http://loinc.org/property/count"/> + <description value="Fourth sub-part of the Component, i.e., after the third carat"/> + <type value="Coding"/> + </property> + <property> + <code value="time-core"/> + <uri value="http://loinc.org/property/time-core"/> + <description value="The primary part of the Time"/> + <type value="Coding"/> + </property> + <property> + <code value="time-modifier"/> + <uri value="http://loinc.org/property/time-modifier"/> + <description value="The modifier of the Time value, such as mean or max"/> + <type value="Coding"/> + </property> + <property> + <code value="system-core"/> + <uri value="http://loinc.org/property/system-core"/> + <description value="The primary part of the System, i.e., without the super system"/> + <type value="Coding"/> + </property> + <property> + <code value="super-system"/> + <uri value="http://loinc.org/property/super-system"/> + <description value="The super system part of the System, if present. The super system represents the source of the specimen when the source is someone or something other than the patient whose chart the result will be stored in. For example, fetus is the super system for measurements done on obstetric ultrasounds, because the fetus is being measured and that measurement is being recorded in the patient's (mother's) chart."/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-gene"/> + <uri value="http://loinc.org/property/analyte-gene"/> + <description value="The specific gene represented in the analyte"/> + <type value="Coding"/> + </property> + <property> + <code value="category"/> + <uri value="http://loinc.org/property/category"/> + <description value="A single LOINC term can be assigned one or more categories based on both programmatic and manual tagging. Category properties also utilize LOINC Class Parts."/> + <type value="Coding"/> + </property> + <property> + <code value="search"/> + <uri value="http://loinc.org/property/search"/> + <description value="Synonyms, fragments, and other Parts that are linked to a term to enable more encompassing search results."/> + <type value="Coding"/> + </property> + + <!-- + LOINC/RSNA Radiology Playbook properties. These apply only to terms in the LOINC/RSNA Radiology Playbook File. + Notes: + Properties are specified as type "Coding", which are represented by LOINC Part codes (LP-) and their display names. + The attribute names here use FHIR styled names rather than their original LOINC style names because the original names contain periods. + --> + + <property> + <code value="rad-modality-modality-type"/> + <uri value="http://loinc.org/property/rad-modality-modality-type"/> + <description value="Modality is used to represent the device used to acquire imaging information."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-modality-modality-subtype"/> + <uri value="http://loinc.org/property/rad-modality-modality-subtype"/> + <description value="Modality subtype may be optionally included to signify a particularly common or evocative configuration of the modality."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-region-imaged"/> + <uri value="http://loinc.org/property/rad-anatomic-location-region-imaged"/> + <description value="The Anatomic Location Region Imaged attribute is used in two ways: as a coarse-grained descriptor of the area imaged and a grouper for finding related imaging exams; or, it is used just as a grouper."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-imaging-focus"/> + <uri value="http://loinc.org/property/rad-anatomic-location-imaging-focus"/> + <description value="The Anatomic Location Imaging Focus is a more fine-grained descriptor of the specific target structure of an imaging exam. In many areas, the focus should be a specific organ."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-laterality-presence"/> + <uri value="http://loinc.org/property/rad-anatomic-location-laterality-presence"/> + <description value="Radiology Exams that require laterality to be specified in order to be performed are signified with an Anatomic Location Laterality Presence attribute set to 'True'"/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-laterality"/> + <uri value="http://loinc.org/property/rad-anatomic-location-laterality"/> + <description value="Radiology exam Laterality is specified as one of: Left, Right, Bilateral, Unilateral, Unspecified"/> + <type value="Coding"/> + </property> + <property> + <code value="rad-view-aggregation"/> + <uri value="http://loinc.org/property/rad-view-aggregation"/> + <description value="Aggregation describes the extent of the imaging performed, whether in quantitative terms (e.g., '3 or more views') or subjective terms (e.g., 'complete')."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-view-view-type"/> + <uri value="http://loinc.org/property/rad-view-view-type"/> + <description value="View type names specific views, such as 'lateral' or 'AP'."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-maneuver-maneuver-type"/> + <uri value="http://loinc.org/property/rad-maneuver-maneuver-type"/> + <description value="Maneuver type indicates an action taken with the goal of elucidating or testing a dynamic aspect of the anatomy."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-timing"/> + <uri value="http://loinc.org/property/rad-timing"/> + <description value="The Timing/Existence property used in conjunction with pharmaceutical and maneuver properties. It specifies whether or not the imaging occurs in the presence of the administered pharmaceutical or a maneuver designed to test some dynamic aspect of anatomy or physiology ."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-pharmaceutical-substance-given"/> + <uri value="http://loinc.org/property/rad-pharmaceutical-substance-given"/> + <description value="The Pharmaceutical Substance Given specifies administered contrast agents, radiopharmaceuticals, medications, or other clinically important agents and challenges during the imaging procedure."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-pharmaceutical-route"/> + <uri value="http://loinc.org/property/rad-pharmaceutical-route"/> + <description value="Route specifies the route of administration of the pharmaceutical."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-reason-for-exam"/> + <uri value="http://loinc.org/property/rad-reason-for-exam"/> + <description value="Reason for exam is used to describe a clinical indication or a purpose for the study."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-presence"/> + <uri value="http://loinc.org/property/rad-guidance-for-presence"/> + <description value="Guidance for.Presence indicates when a procedure is guided by imaging."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-approach"/> + <uri value="http://loinc.org/property/rad-guidance-for-approach"/> + <description value="Guidance for.Approach refers to the primary route of access used, such as percutaneous, transcatheter, or transhepatic."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-action"/> + <uri value="http://loinc.org/property/rad-guidance-for-action"/> + <description value="Guidance for.Action indicates the intervention performed, such as biopsy, aspiration, or ablation."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-object"/> + <uri value="http://loinc.org/property/rad-guidance-for-object"/> + <description value="Guidance for.Object specifies the target of the action, such as mass, abscess or cyst."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-subject"/> + <uri value="http://loinc.org/property/rad-subject"/> + <description value="Subject is intended for use when there is a need to distinguish between the patient associated with an imaging study, and the target of the study."/> + <type value="Coding"/> + </property> + + <!-- + Document Ontology properties. + These apply only to terms in the LOINC Document Ontology File + Notes + Properties are specified as type "Coding", which are represented by LOINC Part codes (LP-) and their display names. + The attribute names here use FHIR styled names rather than their original LOINC style names because those contain periods. + --> + + <property> + <code value="document-kind"/> + <uri value="http://loinc.org/property/document-kind"/> + <description value="Characterizes the general structure of the document at a macro level."/> + <type value="Coding"/> + </property> + <property> + <code value="document-role"/> + <uri value="http://loinc.org/property/document-role"/> + <description value="Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty."/> + <type value="Coding"/> + </property> + <property> + <code value="document-setting"/> + <uri value="http://loinc.org/property/document-setting"/> + <description value="Setting is a modest extension of CMS’s coarse definition of care settings, such as outpatient, hospital, etc. Setting is not equivalent to location, which typically has more locally defined meanings."/> + <type value="Coding"/> + </property> + <property> + <code value="document-subject-matter-domain"/> + <uri value="http://loinc.org/property/document-subject-matter-domain"/> + <description value="Characterizes the clinical domain that is the subject of the document. For example, Internal Medicine, Neurology, Physical Therapy, etc."/> + <type value="Coding"/> + </property> + <property> + <code value="document-type-of-service"/> + <uri value="http://loinc.org/property/document-type-of-service"/> + <description value="Characterizes the kind of service or activity provided to/for the patient (or other subject of the service) that is described in the document."/> + <type value="Coding"/> + </property> + + <!-- Answer list related properties --> + <property> + <code value="answers-for"/> + <uri value="http://loinc.org/property/answers-for"/> + <description value="A LOINC Code for which this answer list is used."/> + <type value="Coding"/> + </property> + + <!-- Note for future consideration. These are properties of LA codes in the context of a particular list. Not global properties. + <property> + <code value="sequence"/> + <uri value="http://loinc.org/property/sequence"/> + <description value="Sequence Number of a answer in a set of answers (LA- codes only)"/> + <type value="integer"/> + </property> + <property> + <code value="score"/> + <uri value="http://loinc.org/property/score"/> + <description value="Score assigned to an answer (LA- codes only)"/> + <type value="integer"/> + </property> + --> +</CodeSystem> + + diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/AnswerFile/AnswerList.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/AnswerFile/AnswerList.csv new file mode 100644 index 00000000000..de4bcdc652e --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/AnswerFile/AnswerList.csv @@ -0,0 +1,12 @@ +"AnswerListId","AnswerListName" ,"AnswerListOID" ,"ExtDefinedYN","ExtDefinedAnswerListCodeSystem","ExtDefinedAnswerListLink" ,"AnswerStringId","LocalAnswerCode","LocalAnswerCodeSystem","SequenceNumber","DisplayText" ,"ExtCodeId","ExtCodeDisplayName" ,"ExtCodeSystem" ,"ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" ,"SubsequentTextPrompt","Description","Score" +"LL1000-0" ,"v2.68 PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13825-7" ,"1" , ,1 ,"v2.68 1 slice or 1 dinner roll" , , , , , , , , +"LL1000-0" ,"v2.68 PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13838-0" ,"2" , ,2 ,"v2.68 2 slices or 2 dinner rolls" , , , , , , , , +"LL1000-0" ,"v2.68 PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13892-7" ,"3" , ,3 ,"v2.68 More than 2 slices or 2 dinner rolls", , , , , , , , +"LL1001-8" ,"v2.68 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA6270-8" ,"00" , ,1 ,"v2.68 Never" , , , , , , , , +"LL1001-8" ,"v2.68 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13836-4" ,"01" , ,2 ,"v2.68 1-3 times per month" , , , , , , , , +"LL1001-8" ,"v2.68 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13834-9" ,"02" , ,3 ,"v2.68 1-2 times per week" , , , , , , , , +"LL1001-8" ,"v2.68 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13853-9" ,"03" , ,4 ,"v2.68 3-4 times per week" , , , , , , , , +"LL1001-8" ,"v2.68 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13860-4" ,"04" , ,5 ,"v2.68 5-6 times per week" , , , , , , , , +"LL1001-8" ,"v2.68 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13827-3" ,"05" , ,6 ,"v2.68 1 time per day" , , , , , , , , +"LL1001-8" ,"v2.68 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA4389-8" ,"97" , ,11 ,"v2.68 Refused" ,"443390004","Refused (qualifier value)","http://snomed.info/sct","http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College", , , +"LL1892-0" ,"v2.68 ICD-9_ICD-10" ,"1.3.6.1.4.1.12009.10.1.1069","Y" , ,"http://www.cdc.gov/nchs/icd.htm", , , , ,"v2.68 " , , , , , , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv new file mode 100644 index 00000000000..820602c77ad --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv @@ -0,0 +1,11 @@ +"LoincNumber","LongCommonName" ,"AnswerListId","AnswerListName" ,"AnswerListLinkType","ApplicableContext" +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]","LL1000-0" ,"PhenX05_13_30D bread amt","NORMATIVE" , +"10061-0" ,"S' wave amplitude in lead I" ,"LL1311-1" ,"PhenX12_44" ,"EXAMPLE" , +"10331-7" ,"Rh [Type] in Blood" ,"LL360-9" ,"Pos|Neg" ,"EXAMPLE" , +"10389-5" ,"Blood product.other [Type]" ,"LL2413-4" ,"Othr bld prod" ,"EXAMPLE" , +"10390-3" ,"Blood product special preparation [Type]" ,"LL2422-5" ,"Blood prod treatment" ,"EXAMPLE" , +"10393-7" ,"Factor IX given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10395-2" ,"Factor VIII given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10401-8" ,"Immune serum globulin given [Type]" ,"LL2421-7" ,"IM/IV" ,"EXAMPLE" , +"10410-9" ,"Plasma given [Type]" ,"LL2417-5" ,"Plasma type" ,"EXAMPLE" , +"10568-4" ,"Clarity of Semen" ,"LL2427-4" ,"Clear/Opales/Milky" ,"EXAMPLE" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/ConsumerName/ConsumerName.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/ConsumerName/ConsumerName.csv new file mode 100644 index 00000000000..b4ec2907985 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/ConsumerName/ConsumerName.csv @@ -0,0 +1,6 @@ +"LoincNumber","ConsumerName" +"61438-8","Consumer Name 61438-8" +,"Consumer Name X" +47239-9","" +"17787-3","Consumer Name 17787-3" +"38699-5","1,1-Dichloroethane, Air" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/DocumentOntology/DocumentOntology.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/DocumentOntology/DocumentOntology.csv new file mode 100644 index 00000000000..f857d7f297b --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/DocumentOntology/DocumentOntology.csv @@ -0,0 +1,10 @@ +"LoincNumber","PartNumber","PartTypeName","PartSequenceOrder","PartName" +"11488-4","LP173418-7","Document.Kind","1","Note" +"11488-4","LP173110-0","Document.TypeOfService","1","Consultation" +"11488-4","LP173061-5","Document.Setting","1","{Setting}" +"11488-4","LP187187-2","Document.Role","1","{Role}" +"11490-0","LP173418-7","Document.Kind","1","Note" +"11490-0","LP173221-5","Document.TypeOfService","1","Discharge summary" +"11490-0","LP173061-5","Document.Setting","1","{Setting}" +"11490-0","LP173084-7","Document.Role","1","Physician" +"11492-6","LP173418-7","Document.Kind","1","Note" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/GroupFile/Group.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/GroupFile/Group.csv new file mode 100644 index 00000000000..66f5561ea1c --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/GroupFile/Group.csv @@ -0,0 +1,2 @@ +"ParentGroupId","GroupId","Group","Archetype","Status","VersionFirstReleased" +"LG100-4","LG1695-8","1,4-Dichlorobenzene|MCnc|Pt|ANYBldSerPl","","Active","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/GroupFile/GroupLoincTerms.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/GroupFile/GroupLoincTerms.csv new file mode 100644 index 00000000000..04c19759cfb --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/GroupFile/GroupLoincTerms.csv @@ -0,0 +1,3 @@ +"Category","GroupId","Archetype","LoincNumber","LongCommonName" +"Flowsheet","LG1695-8","","17424-3","1,4-Dichlorobenzene [Mass/volume] in Blood" +"Flowsheet","LG1695-8","","13006-2","1,4-Dichlorobenzene [Mass/volume] in Serum or Plasma" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/GroupFile/ParentGroup.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/GroupFile/ParentGroup.csv new file mode 100644 index 00000000000..734a86c43dd --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/GroupFile/ParentGroup.csv @@ -0,0 +1,2 @@ +"ParentGroupId","ParentGroup","Status" +"LG100-4","Chem_DrugTox_Chal_Sero_Allergy<SAME:Comp|Prop|Tm|Syst (except intravascular and urine)><ANYBldSerPlas,ANYUrineUrineSed><ROLLUP:Method>","ACTIVE" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv new file mode 100644 index 00000000000..a78b16dd69a --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv @@ -0,0 +1,10 @@ +"LOINC_NUM","LONG_COMMON_NAME" +"11525-3","US Pelvis Fetus for pregnancy" +"17787-3","v2.68 NM Thyroid gland Study report" +"18744-3","Bronchoscopy study" +"18746-8","Colonoscopy study" +"18748-4","Diagnostic imaging study" +"18751-8","Endoscopy study" +"18753-4","Flexible sigmoidoscopy study" +"24531-6","US Retroperitoneum" +"24532-4","US Abdomen RUQ" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv new file mode 100644 index 00000000000..c79b3197490 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv @@ -0,0 +1,9 @@ +"ID","ISO_LANGUAGE","ISO_COUNTRY","LANGUAGE_NAME","PRODUCER" +"5","zh","CN","Chinese (CHINA)","Lin Zhang, A LOINC volunteer from China" +"7","es","AR","Spanish (ARGENTINA)","Conceptum Medical Terminology Center" +"8","fr","CA","French (CANADA)","Canada Health Infoway Inc." +,"de","AT","German (AUSTRIA)","ELGA, Austria" +"88",,"AT","German (AUSTRIA)","ELGA, Austria" +"89","de",,"German (AUSTRIA)","ELGA, Austria" +"90","de","AT",,"ELGA, Austria" +"24","de","AT","German (AUSTRIA)","ELGA, Austria" \ No newline at end of file diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv new file mode 100644 index 00000000000..c6882d47504 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv @@ -0,0 +1,4 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","Entlassungsbrief Ärztlich","Ergebnis","Zeitpunkt","{Setting}","Dokument","Dermatologie","DOC.ONTOLOGY","de shortname","de long common name","de related names 2","de linguistic variant display name" +"43730-1","","","","","","","","","","EBV-DNA qn. PCR","EBV-DNA quantitativ PCR" +"17787-3","","","","","","","","","","CoV OC43 RNA ql/SM P","Coronavirus OC43 RNA ql. /Sondermaterial PCR" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv new file mode 100644 index 00000000000..fa09e0cb242 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv @@ -0,0 +1,6 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif","Immunofluorescence","Sérologie","","","","" +"11704-4","Gliale nucléaire de type 1 , IgG","Titre","Temps ponctuel","LCR","Quantitatif","Immunofluorescence","Sérologie","","","","" +,"Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif",,,"","","","" +"17787-3","Virus respiratoire syncytial bovin","Présence-Seuil","Temps ponctuel","XXX","Ordinal","Culture spécifique à un microorganisme","Microbiologie","","","","" +"17788-1","Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif",,,"","","","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv new file mode 100644 index 00000000000..48d07d9fdc3 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv @@ -0,0 +1,9 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","血流速度.收缩期.最大值","速度","时间点","大脑中动脉","定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"11704-4","血流速度.收缩期.最大值","速度","时间点","动脉导管","定量型","超声.多普勒","产科学检查与测量指标.超声","","","动态 动脉管 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"17787-3","血流速度.收缩期.最大值","速度","时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"61438-6",,"速度","时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"10000-8","血流速度.收缩期.最大值",,"时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"17788-1","血流速度.收缩期.最大值","速度",,"大脑中动脉","定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"11488-4","血流速度.收缩期.最大值","速度","时间点",,"定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"47239-9","血流速度.收缩期.最大值","速度","时间点","大脑中动脉",,"超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv new file mode 100644 index 00000000000..d8cf83cd09e --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv @@ -0,0 +1,10 @@ +LOINC_NUM,LOINC_LONG_COMMON_NAME,IEEE_CF_CODE10,IEEE_REFID,IEEE_DESCRIPTION,IEEE_DIM,IEEE_UOM_UCUM +11556-8,Oxygen [Partial pressure] in Blood,160116,MDC_CONC_PO2_GEN,,LMT-2L-2 LMT-2L-2,kPa mm[Hg] +11557-6,Carbon dioxide [Partial pressure] in Blood,160064,MDC_CONC_PCO2_GEN,,LMT-2L-2 LMT-2L-2,kPa mm[Hg] +11558-4,pH of Blood,160004,MDC_CONC_PH_GEN,,[pH],[pH] +12961-9,Urea nitrogen [Mass/volume] in Arterial blood,160080,MDC_CONC_UREA_ART,,ML-3 NL-3,mg/dL mmol/L +14749-6,Glucose [Moles/volume] in Serum or Plasma,160196,MDC_CONC_GLU_VENOUS_PLASMA,Plasma glucose concentration taken from venous,NL-3 ,mmol/L +14749-6,Glucose [Moles/volume] in Serum or Plasma,160368,MDC_CONC_GLU_UNDETERMINED_PLASMA,Plasma glucose concentration taken from undetermined sample source,NL-3 ,mmol/L +15074-8,Glucose [Moles/volume] in Blood,160020,MDC_CONC_GLU_GEN,,NL-3,mmol/L +15074-8,Glucose [Moles/volume] in Blood,160364,MDC_CONC_GLU_UNDETERMINED_WHOLEBLOOD,Whole blood glucose concentration taken from undetermined sample source,NL-3 ,mmol/L +17861-6,Calcium [Mass/volume] in Serum or Plasma,160024,MDC_CONC_CA_GEN,,ML-3,mg/dL diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv new file mode 100644 index 00000000000..f935aeec77b --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv @@ -0,0 +1,10 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartTypeName" ,"PartName" ,"PartSequenceOrder","RID" ,"PreferredName" ,"RPID" ,"LongName" +"17787-3" ,"v2.68 NM Thyroid gland Study report","LP199995-4","Rad.Anatomic Location.Region Imaged","Neck" ,"A" ,"RID7488" ,"neck" ,"" ,"" +"17787-3" ,"v2.68 NM Thyroid gland Study report","LP206648-0","Rad.Anatomic Location.Imaging Focus","Thyroid gland" ,"A" ,"RID7578" ,"thyroid gland" ,"" ,"" +"17787-3" ,"v2.68 NM Thyroid gland Study report","LP208891-4","Rad.Modality.Modality type" ,"NM" ,"A" ,"RID10330","nuclear medicine imaging","" ,"" +"24531-6" ,"v2.68 US Retroperitoneum" ,"LP207608-3","Rad.Modality.Modality type" ,"US" ,"A" ,"RID10326","Ultrasound" ,"RPID2142","US Retroperitoneum" +"24531-6" ,"v2.68 US Retroperitoneum" ,"LP199943-4","Rad.Anatomic Location.Imaging Focus","Retroperitoneum" ,"A" ,"RID431" ,"RETROPERITONEUM" ,"RPID2142","US Retroperitoneum" +"24531-6" ,"v2.68 US Retroperitoneum" ,"LP199956-6","Rad.Anatomic Location.Region Imaged","Abdomen" ,"A" ,"RID56" ,"Abdomen" ,"RPID2142","US Retroperitoneum" +"24532-4" ,"v2.68 US Abdomen RUQ" ,"LP199956-6","Rad.Anatomic Location.Region Imaged","Abdomen" ,"A" ,"RID56" ,"Abdomen" ,"" ,"" +"24532-4" ,"v2.68 US Abdomen RUQ" ,"LP207608-3","Rad.Modality.Modality type" ,"US" ,"A" ,"RID10326","Ultrasound" ,"" ,"" +"24532-4" ,"v2.68 US Abdomen RUQ" ,"LP208105-9","Rad.Anatomic Location.Imaging Focus","Right upper quadrant","A" ,"RID29994","Right upper quadrant" ,"" ,"" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv new file mode 100644 index 00000000000..72d95485a58 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv @@ -0,0 +1,10 @@ +"LOINC_NUM","LONG_COMMON_NAME","ORDER_OBS" +"42176-8","1,3 beta glucan [Mass/volume] in Serum","Both" +"53835-5","1,5-Anhydroglucitol [Mass/volume] in Serum or Plasma","Both" +"31019-3","10-Hydroxycarbazepine [Mass/volume] in Serum or Plasma","Both" +"6765-2","17-Hydroxypregnenolone [Mass/volume] in Serum or Plasma","Both" +"1668-3","17-Hydroxyprogesterone [Mass/volume] in Serum or Plasma","Both" +"32854-2","17-Hydroxyprogesterone [Presence] in DBS","Both" +"49054-0","25-Hydroxycalciferol [Mass/volume] in Serum or Plasma","Both" +"62292-8","25-Hydroxyvitamin D2+25-Hydroxyvitamin D3 [Mass/volume] in Serum or Plasma","Both" +"44907-4","5-Hydroxyindoleacetate panel - 24 hour Urine","Order" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv new file mode 100644 index 00000000000..527b8fd5cae --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv @@ -0,0 +1,10 @@ +PATH_TO_ROOT,SEQUENCE,IMMEDIATE_PARENT,CODE,CODE_TEXT +,1,,LP31755-9,Microbiology +LP31755-9,1,LP31755-9,LP14559-6,Microorganism +LP31755-9.LP14559-6,1,LP14559-6,LP98185-9,Bacteria +LP31755-9.LP14559-6.LP98185-9,1,LP98185-9,LP14082-9,Bacteria +LP31755-9.LP14559-6.LP98185-9.LP14082-9,1,LP14082-9,LP52258-8,Bacteria | Body Fluid +LP31755-9.LP14559-6.LP98185-9.LP14082-9.LP52258-8,1,LP52258-8,41599-2,Bacteria Fld Ql Micro +LP31755-9.LP14559-6.LP98185-9.LP14082-9,2,LP14082-9,LP52260-4,Bacteria | Cerebral spinal fluid +LP31755-9.LP14559-6.LP98185-9.LP14082-9.LP52260-4,1,LP52260-4,41602-4,Bacteria CSF Ql Micro +LP31755-9.LP14559-6.LP98185-9.LP14082-9,3,LP14082-9,LP52960-9,Bacteria | Cervix diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PanelsAndForms/AnswerList.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PanelsAndForms/AnswerList.csv new file mode 100644 index 00000000000..4d8aaaac004 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PanelsAndForms/AnswerList.csv @@ -0,0 +1,12 @@ +"AnswerListId","AnswerListName" ,"AnswerListOID" ,"ExtDefinedYN","ExtDefinedAnswerListCodeSystem","ExtDefinedAnswerListLink" ,"AnswerStringId","LocalAnswerCode","LocalAnswerCodeSystem","SequenceNumber","DisplayText" ,"ExtCodeId","ExtCodeDisplayName" ,"ExtCodeSystem" ,"ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" ,"SubsequentTextPrompt","Description","Score" +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13825-7" ,"1" , ,1 ,"v2.68 1 slice or 1 dinner roll" , , , , , , , , +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13838-0" ,"2" , ,2 ,"v2.68 2 slices or 2 dinner rolls" , , , , , , , , +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13892-7" ,"3" , ,3 ,"v2.68 More than 2 slices or 2 dinner rolls", , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA6270-8" ,"00" , ,1 ,"v2.68 Never" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13836-4" ,"01" , ,2 ,"v2.68 1-3 times per month" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13834-9" ,"02" , ,3 ,"v2.68 1-2 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13853-9" ,"03" , ,4 ,"v2.68 3-4 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13860-4" ,"04" , ,5 ,"v2.68 5-6 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13827-3" ,"05" , ,6 ,"v2.68 1 time per day" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA4389-8" ,"97" , ,11 ,"v2.68 Refused" ,"443390004","Refused (qualifier value)","http://snomed.info/sct","http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College", , , +"LL1892-0" ,"ICD-9_ICD-10" ,"1.3.6.1.4.1.12009.10.1.1069","Y" , ,"http://www.cdc.gov/nchs/icd.htm", , , , , , , , , , , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PanelsAndForms/Loinc.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PanelsAndForms/Loinc.csv new file mode 100644 index 00000000000..ec4fd526a0c --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PanelsAndForms/Loinc.csv @@ -0,0 +1,16 @@ +"LOINC_NUM","COMPONENT" ,"PROPERTY","TIME_ASPCT","SYSTEM" ,"SCALE_TYP","METHOD_TYP" ,"CLASS" ,"VersionLastChanged","CHNG_TYPE","DefinitionDescription" ,"STATUS","CONSUMER_NAME","CLASSTYPE","FORMULA","SPECIES","EXMPL_ANSWERS","SURVEY_QUEST_TEXT" ,"SURVEY_QUEST_SRC" ,"UNITSREQUIRED","SUBMITTED_UNITS","RELATEDNAMES2" ,"SHORTNAME" ,"ORDER_OBS" ,"CDISC_COMMON_TESTS","HL7_FIELD_SUBFIELD_ID","EXTERNAL_COPYRIGHT_NOTICE" ,"EXAMPLE_UNITS","LONG_COMMON_NAME" ,"UnitsAndRange","DOCUMENT_SECTION","EXAMPLE_UCUM_UNITS","EXAMPLE_SI_UCUM_UNITS","STATUS_REASON","STATUS_TEXT","CHANGE_REASON_PUBLIC" ,"COMMON_TEST_RANK","COMMON_ORDER_RANK","COMMON_SI_TEST_RANK","HL7_ATTACHMENT_STRUCTURE","EXTERNAL_COPYRIGHT_LINK","PanelType","AskAtOrderEntry","AssociatedObservations" ,"VersionFirstReleased","ValidHL7AttachmentRequest" +"10013-1" ,"R' wave amplitude.lead I" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-I; R wave Amp L-I; Random; Right; Voltage" ,"R' wave Amp L-I" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead I" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10014-9" ,"R' wave amplitude.lead II" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"2; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-II; R wave Amp L-II; Random; Right; Voltage" ,"R' wave Amp L-II" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead II" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10015-6" ,"R' wave amplitude.lead III" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"3; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-III; R wave Amp L-III; Random; Right; Voltage" ,"R' wave Amp L-III" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead III" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10016-4" ,"R' wave amplitude.lead V1" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V1; R wave Amp L-V1; Random; Right; Voltage" ,"R' wave Amp L-V1" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V1" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"1001-7" ,"DBG Ab" ,"Pr" ,"Pt" ,"Ser/Plas^donor" ,"Ord" , ,"BLDBK" ,"2.44" ,"MIN" , ,"ACTIVE", ,1 , , , , , , , ,"ABS; Aby; Antby; Anti; Antibodies; Antibody; Autoantibodies; Autoantibody; BLOOD BANK; Donna Bennett-Goodspeed; Donr; Ordinal; Pl; Plasma; Plsm; Point in time; QL; Qual; Qualitative; Random; Screen; SerP; SerPl; SerPl^donor; SerPlas; Serum; Serum or plasma; SR" ,"DBG Ab SerPl Donr Ql" ,"Observation", , , , ,"DBG Ab [Presence] in Serum or Plasma from donor" , , , , , , ,"The Property has been changed from ACnc to Pr (Presence) to reflect the new model for ordinal terms where results are based on presence or absence." ,0 ,0 ,0 , , , , , , , +"10017-2" ,"R' wave amplitude.lead V2" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V2; R wave Amp L-V2; Random; Right; Voltage" ,"R' wave Amp L-V2" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V2" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10018-0" ,"R' wave amplitude.lead V3" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V3; R wave Amp L-V3; Random; Right; Voltage" ,"R' wave Amp L-V3" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V3" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10019-8" ,"R' wave amplitude.lead V4" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V4; R wave Amp L-V4; Random; Right; Voltage" ,"R' wave Amp L-V4" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V4" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10020-6" ,"R' wave amplitude.lead V5" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V5; R wave Amp L-V5; Random; Right; Voltage" ,"R' wave Amp L-V5" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V5" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Find" ,"Pt" ,"^Patient" ,"Ord" ,"PhenX" ,"PHENX" ,"2.44" ,"MIN" , ,"TRIAL" , ,2 , , , ,"Each time you eat bread, toast or dinner rolls, how much do you usually eat?","PhenX.050201100100","N" , ,"Finding; Findings; How much bread in 30D; Last; Ordinal; Point in time; QL; Qual; Qualitative; Random; Screen" ,"How much bread in 30D PhenX", , , , , ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]", , , , , , , ,0 ,0 ,0 , , , , , , , +"10000-8" ,"R wave duration.lead AVR" ,"Time" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; Durat; ECG; EKG.MEASUREMENTS; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave dur L-AVR; R wave dur L-AVR; Random; Right" ,"R wave dur L-AVR" ,"Observation", , , ,"s" ,"R wave duration in lead AVR" , , ,"s" , , , , ,0 ,0 ,0 , , , , , , , +"17787-3" ,"Study report" ,"Find" ,"Pt" ,"Neck>Thyroid gland","Doc" ,"NM" ,"RAD" ,"2.61" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Document; Finding; Findings; Imaging; Point in time; Radiology; Random; Study report; Thy" ,"NM Thyroid Study report" ,"Both" , , , , ,"v2.68 NM Thyroid gland Study report" , , , , , , ,"Changed System from ""Thyroid"" for conformance with the LOINC/RadLex unified model.; Method of ""Radnuc"" was changed to ""NM"". The LOINC/RadLex Committee agreed to use a subset of the two-letter DICOM modality codes as the primary modality identifier." ,0 ,0 ,0 ,"IG exists" , , , ,"81220-6;72230-6" ,"1.0l" , +"17788-1" ,"Large unstained cells/100 leukocytes" ,"NFr" ,"Pt" ,"Bld" ,"Qn" ,"Automated count","HEM/BC" ,"2.50" ,"MIN" ,"Part of auto diff output of Bayer H*3S; peroxidase negative cells too large to be classified as lymph or basophil" ,"ACTIVE", ,1 , , , , , ,"Y" ,"%" ,"100WBC; Auto; Automated detection; Blood; Cell; Cellularity; Elec; Elect; Electr; HEMATOLOGY/CELL COUNTS; Leuc; Leuk; Leukocyte; Lkcs; LUC; Number Fraction; Percent; Point in time; QNT; Quan; Quant; Quantitative; Random; WB; WBC; WBCs; White blood cell; White blood cells; Whole blood" ,"LUC/leuk NFr Bld Auto" ,"Observation", , , ,"%" ,"Large unstained cells/100 leukocytes in Blood by Automated count" , , ,"%" , , , , ,1894 ,0 ,1894 , , , , , ,"1.0l" , +"11488-4" ,"Consultation note" ,"Find" ,"Pt" ,"{Setting}" ,"Doc" ,"{Role}" ,"DOC.ONTOLOGY","2.63" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Consult note; DOC.ONT; Document; Encounter; Evaluation and management; Evaluation and management note; Finding; Findings; notes; Point in time; Random; Visit note" ,"Consult note" ,"Both" , , , , ,"Consult note" , , , , , , ,"Edit made because this term is conformant to the Document Ontology axis values and therefore are being placed in this class.; Based on Clinical LOINC Committee decision during the September 2014 meeting, {Provider} was changed to {Author Type} to emphasize a greater breadth of potential document authors. At the September 2015 Clinical LOINC Committee meeting, the Committee decided to change {Author Type} to {Role} to align with the 'Role' axis name in the LOINC Document Ontology.; Because it is too difficult to maintain and because the distinction between documents and sections is not clear-cut nor necessary in most cases, the DOCUMENT_SECTION field has been deemed to have little value. The field has been set to null in the December 2017 release in preparation for removal in the December 2018 release. These changes were approved by the Clinical LOINC Committee.",0 ,0 ,0 ,"IG exists" , , , ,"81222-2;72231-4;81243-8","1.0j-a" ,"Y" +"47239-9" ,"Reason for stopping HIV Rx" ,"Type" ,"Pt" ,"^Patient" ,"Nom" ,"Reported" ,"ART" ,"2.50" ,"MIN" ,"Reason for stopping antiretroviral therapy" ,"ACTIVE", ,2 , , , , , ,"N" , ,"AIDS; Anti-retroviral therapy; ART; Human immunodeficiency virus; Nominal; Point in time; Random; Treatment; Typ" ,"Reason for stopping HIV Rx" ,"Observation", , ,"Copyright © 2006 World Health Organization. Used with permission. Publications of the World Health Organization can be obtained from WHO Press, World Health Organization, 20 Avenue Appia, 1211 Geneva 27, Switzerland (tel: +41 22 791 2476; fax: +41 22 791 4857; email: bookorders@who.int). Requests for permission to reproduce or translate WHO publications – whether for sale or for noncommercial distribution – should be addressed to WHO Press, at the above address (fax: +41 22 791 4806; email: permissions@who.int). The designations employed and the presentation of the material in this publication do not imply the expression of any opinion whatsoever on the part of the World Health Organization concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries. Dotted lines on maps represent approximate border lines for which there may not yet be full agreement. The mention of specific companies or of certain manufacturers’ products does not imply that they are endorsed or recommended by the World Health Organization in preference to others of a similar nature that are not mentioned. Errors and omissions excepted, the names of proprietary products are distinguished by initial capital letters. All reasonable precautions have been taken by WHO to verify the information contained in this publication. However, the published material is being distributed without warranty of any kind, either express or implied. The responsibility for the interpretation and use of the material lies with the reader. In no event shall the World Health Organization be liable for damages arising from its use.", ,"Reason for stopping HIV treatment" , , , , , , , ,0 ,0 ,0 , ,"WHO_HIV" , , , ,"2.22" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv new file mode 100644 index 00000000000..820602c77ad --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv @@ -0,0 +1,11 @@ +"LoincNumber","LongCommonName" ,"AnswerListId","AnswerListName" ,"AnswerListLinkType","ApplicableContext" +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]","LL1000-0" ,"PhenX05_13_30D bread amt","NORMATIVE" , +"10061-0" ,"S' wave amplitude in lead I" ,"LL1311-1" ,"PhenX12_44" ,"EXAMPLE" , +"10331-7" ,"Rh [Type] in Blood" ,"LL360-9" ,"Pos|Neg" ,"EXAMPLE" , +"10389-5" ,"Blood product.other [Type]" ,"LL2413-4" ,"Othr bld prod" ,"EXAMPLE" , +"10390-3" ,"Blood product special preparation [Type]" ,"LL2422-5" ,"Blood prod treatment" ,"EXAMPLE" , +"10393-7" ,"Factor IX given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10395-2" ,"Factor VIII given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10401-8" ,"Immune serum globulin given [Type]" ,"LL2421-7" ,"IM/IV" ,"EXAMPLE" , +"10410-9" ,"Plasma given [Type]" ,"LL2417-5" ,"Plasma type" ,"EXAMPLE" , +"10568-4" ,"Clarity of Semen" ,"LL2427-4" ,"Clear/Opales/Milky" ,"EXAMPLE" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/LoincPartLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/LoincPartLink.csv new file mode 100644 index 00000000000..36c84f3fe95 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/LoincPartLink.csv @@ -0,0 +1,10 @@ +"LoincNumber","LongCommonName","PartNumber","PartName","PartCodeSystem","PartTypeName","LinkTypeName","Property" +"10013-1","R' wave amplitude in lead I","LP31101-6","R' wave amplitude.lead I","http://loinc.org","COMPONENT","Primary","http://loinc.org/property/COMPONENT" +"10013-1","R' wave amplitude in lead I","LP6802-5","Elpot","http://loinc.org","PROPERTY","Primary","http://loinc.org/property/PROPERTY" +"10013-1","R' wave amplitude in lead I","LP6960-1","Pt","http://loinc.org","TIME","Primary","http://loinc.org/property/TIME_ASPCT" +"10013-1","R' wave amplitude in lead I","LP7289-4","Heart","http://loinc.org","SYSTEM","Primary","http://loinc.org/property/SYSTEM" +"10013-1","R' wave amplitude in lead I","LP7753-9","Qn","http://loinc.org","SCALE","Primary","http://loinc.org/property/SCALE_TYP" +"10013-1","R' wave amplitude in lead I","LP6244-0","EKG","http://loinc.org","METHOD","Primary","http://loinc.org/property/METHOD_TYP" +"10013-1","R' wave amplitude in lead I","LP31101-6","R' wave amplitude.lead I","http://loinc.org","COMPONENT","DetailedModel","http://loinc.org/property/analyte" +"10013-1","R' wave amplitude in lead I","LP6802-5","Elpot","http://loinc.org","PROPERTY","DetailedModel","http://loinc.org/property/PROPERTY" +"10013-1","R' wave amplitude in lead I","LP6960-1","Pt","http://loinc.org","TIME","DetailedModel","http://loinc.org/property/time-core" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/LoincPartLink_Primary.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/LoincPartLink_Primary.csv new file mode 100644 index 00000000000..8dbe575ffd2 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/LoincPartLink_Primary.csv @@ -0,0 +1,7 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartName" ,"PartCodeSystem" ,"PartTypeName","LinkTypeName","Property" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"Primary" ,"http://loinc.org/property/COMPONENT" +"10013-1" ,"R' wave amplitude in lead I","LP6802-5" ,"Elpot" ,"http://loinc.org","PROPERTY" ,"Primary" ,"http://loinc.org/property/PROPERTY" +"10013-1" ,"R' wave amplitude in lead I","LP6960-1" ,"Pt" ,"http://loinc.org","TIME" ,"Primary" ,"http://loinc.org/property/TIME_ASPCT" +"10013-1" ,"R' wave amplitude in lead I","LP7289-4" ,"Heart" ,"http://loinc.org","SYSTEM" ,"Primary" ,"http://loinc.org/property/SYSTEM" +"10013-1" ,"R' wave amplitude in lead I","LP7753-9" ,"Qn" ,"http://loinc.org","SCALE" ,"Primary" ,"http://loinc.org/property/SCALE_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP6244-0" ,"EKG" ,"http://loinc.org","METHOD" ,"Primary" ,"http://loinc.org/property/METHOD_TYP" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv new file mode 100644 index 00000000000..869c2c1651d --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv @@ -0,0 +1,13 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartName" ,"PartCodeSystem" ,"PartTypeName","LinkTypeName" ,"Property" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"DetailedModel" ,"http://loinc.org/property/analyte" +"10013-1" ,"R' wave amplitude in lead I","LP6802-5" ,"Elpot" ,"http://loinc.org","PROPERTY" ,"DetailedModel" ,"http://loinc.org/property/PROPERTY" +"10013-1" ,"R' wave amplitude in lead I","LP6960-1" ,"Pt" ,"http://loinc.org","TIME" ,"DetailedModel" ,"http://loinc.org/property/time-core" +"10013-1" ,"R' wave amplitude in lead I","LP7289-4" ,"Heart" ,"http://loinc.org","SYSTEM" ,"DetailedModel" ,"http://loinc.org/property/system-core" +"10013-1" ,"R' wave amplitude in lead I","LP7753-9" ,"Qn" ,"http://loinc.org","SCALE" ,"DetailedModel" ,"http://loinc.org/property/SCALE_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP6244-0" ,"EKG" ,"http://loinc.org","METHOD" ,"DetailedModel" ,"http://loinc.org/property/METHOD_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"SyntaxEnhancement","http://loinc.org/property/analyte-core" +"10013-1" ,"R' wave amplitude in lead I","LP190563-9","Cardiology" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP29708-2" ,"Cardiology" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7787-7" ,"Clinical" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7795-0" ,"EKG measurements" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7795-0" ,"EKG.MEAS" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/CLASS" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/Part.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/Part.csv new file mode 100644 index 00000000000..d5816ead286 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/Part.csv @@ -0,0 +1,46 @@ +"PartNumber","PartTypeName","PartName","PartDisplayName","Status" +"LP101394-7","ADJUSTMENT","adjusted for maternal weight","adjusted for maternal weight","ACTIVE" +"LP101907-6","ADJUSTMENT","corrected for age","corrected for age","ACTIVE" +"LP115711-6","ADJUSTMENT","corrected for background","corrected for background","ACTIVE" +"LP147359-6","ADJUSTMENT","adjusted for body weight","adjusted for body weight","ACTIVE" +"LP173482-3","ADJUSTMENT","1st specimen","1st specimen","DEPRECATED" +"LP173483-1","ADJUSTMENT","post cyanocobalamin",,"ACTIVE" +"LP173484-9","ADJUSTMENT","W hyperextension)",,"ACTIVE" +"LP6244-0","METHOD","EKG","Electrocardiogram (EKG)","ACTIVE" +"LP18172-4","COMPONENT","Interferon.beta","Interferon beta","ACTIVE" +"LP7289-4","SYSTEM","Heart","Heart","ACTIVE" +"LP6960-1","TIME","Pt","Point in time (spot)","ACTIVE" +"LP6802-5","PROPERTY","Elpot","Electrical Potential (Voltage)","ACTIVE" +"LP7753-9","SCALE","Qn","Qn","ACTIVE" +"LP31101-6","COMPONENT","R' wave amplitude.lead I","R' wave amplitude.lead I","ACTIVE" +"LP31102-4","COMPONENT","R' wave amplitude.lead II","R' wave amplitude.lead II","ACTIVE" +"LP31103-2","COMPONENT","R' wave amplitude.lead III","R' wave amplitude.lead III","ACTIVE" +"LP31104-0","COMPONENT","R' wave amplitude.lead V1","R' wave amplitude.lead V1","ACTIVE" +"LP31105-7","COMPONENT","R' wave amplitude.lead V2","R' wave amplitude.lead V2","ACTIVE" +"LP31106-5","COMPONENT","R' wave amplitude.lead V3","R' wave amplitude.lead V3","ACTIVE" +"LP31107-3","COMPONENT","R' wave amplitude.lead V4","R' wave amplitude.lead V4","ACTIVE" +"LP31108-1","COMPONENT","R' wave amplitude.lead V5","R' wave amplitude.lead V5","ACTIVE" +"LP31109-9","COMPONENT","R' wave amplitude.lead V6","R' wave amplitude.lead V6","ACTIVE" +"LP31110-7","COMPONENT","R' wave duration.lead AVF","R' wave duration.lead AVF","ACTIVE" +"LP30269-2","SYSTEM","Ser/Plas^donor",,"ACTIVE" +"LP149220-8","PROPERTY","Pr","Presence","ACTIVE" +"LP7751-3","SCALE","Ord","Ord","ACTIVE" +"LP37904-7","COMPONENT","DBG Ab","DBG Ab","ACTIVE" +"LP6813-2","PROPERTY","Find","Finding","ACTIVE" +"LP95333-8","METHOD","PhenX","PhenX","ACTIVE" +"LP102627-9","COMPONENT","Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days","ACTIVE" +"LP6879-3","PROPERTY","Time","Time (e.g. seconds)","ACTIVE" +"LP31088-5","COMPONENT","R wave duration.lead AVR","R wave duration.lead AVR","ACTIVE" +"LP206647-2","SYSTEM","Neck>Thyroid gland","Thyroid gland","ACTIVE" +"LP208655-3","METHOD","NM","NM","ACTIVE" +"LP32888-7","SCALE","Doc","Doc","ACTIVE" +"LP31534-8","COMPONENT","Study report","Study report","ACTIVE" +"LP7057-5","SYSTEM","Bld","Blood","ACTIVE" +"LP6838-9","PROPERTY","NFr","Number Fraction","ACTIVE" +"LP6141-8","METHOD","Automated count","Automated count","ACTIVE" +"LP15842-5","COMPONENT","Pyridoxine","Pyridoxine","ACTIVE" +"LP19258-0","COMPONENT","Large unstained cells","Large unstained cells","ACTIVE" +"LP32887-9","SYSTEM","{Setting}","{Setting}","ACTIVE" +"LP187178-1","METHOD","{Role}","Role-unspecified","ACTIVE" +"LP72311-1","COMPONENT","Consultation note","Consultation note","ACTIVE" + diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv new file mode 100644 index 00000000000..495416894ce --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv @@ -0,0 +1,12 @@ +"PartNumber","PartName" ,"PartTypeName","ExtCodeId" ,"ExtCodeDisplayName" ,"ExtCodeSystem" ,"Equivalence","ContentOrigin","ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" +"LP18172-4" ,"Interferon.beta" ,"COMPONENT" ," 420710006","Interferon beta (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP31706-2" ,"Nornicotine" ,"COMPONENT" ,"1018001" ,"Nornicotine (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15826-8" ,"Prostaglandin F2","COMPONENT" ,"10192006" ,"Prostaglandin PGF2 (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP7400-7" ,"Liver" ,"SYSTEM" ,"10200004" ,"Liver structure (body structure)","http://snomed.info/sct" ,"wider" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP29165-5" ,"Liver.FNA" ,"SYSTEM" ,"10200004" ,"Liver structure (body structure)","http://snomed.info/sct" ,"narrower" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15666-8" ,"Inosine" ,"COMPONENT" ,"102640000" ,"Inosine (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15943-1" ,"Uronate" ,"COMPONENT" ,"102641001" ,"Uronic acid (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15791-4" ,"Phenylketones" ,"COMPONENT" ,"102642008" ,"Phenylketones (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15721-1" ,"Malonate" ,"COMPONENT" ,"102648007" ,"Malonic acid (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15842-5" ,"Pyridoxine" ,"COMPONENT" ,"1054" ,"Pyridoxine" ,"http://pubchem.ncbi.nlm.nih.gov","equivalent" , , , +"LP15842-5" ,"Pyridoxine" ,"COMPONENT" ,"1054" ,"Pyridoxine" ,"http://foo/bar" ,"equivalent" , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv new file mode 100644 index 00000000000..1e9b3872892 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv @@ -0,0 +1,10 @@ +LOINC #,Long Common Name,Short Name,CLASS,Rank +14682-9,Creatinine [Moles/volume] in Serum or Plasma,Creat SerPl-mCnc,Chem,1 +718-7,Hemoglobin [Mass/volume] in Blood,Hgb Bld-mCnc,HEM/BC,2 +2823-3,Potassium [Moles/volume] in Serum or Plasma,Potassium SerPl-sCnc,Chem,3 +14749-6,Glucose [Moles/volume] in Serum or Plasma,Glucose SerPl-mCnc,Chem,4 +2951-2,Sodium [Moles/volume] in Serum or Plasma,Sodium SerPl-sCnc,Chem,5 +3094-0,Urea nitrogen [Mass/volume] in Serum or Plasma,BUN SerPl-mCnc,Chem,6 +2028-9,"Carbon dioxide, total [Moles/volume] in Serum or Plasma",CO2 SerPl-sCnc,Chem,7 +2075-0,Chloride [Moles/volume] in Serum or Plasma,Chloride SerPl-sCnc,Chem,8 +789-8,Erythrocytes [#/volume] in Blood by Automated count,RBC # Bld Auto,HEM/BC,9 diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv new file mode 100644 index 00000000000..c80db052dd3 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv @@ -0,0 +1,10 @@ +LOINC #,Long Common Name,Short Name,CLASS,Rank +2160-0,Creatinine [Mass/volume] in Serum or Plasma,Creat SerPl-mCnc,Chem,1 +718-7,Hemoglobin [Mass/volume] in Blood,Hgb Bld-mCnc,HEM/BC,2 +2823-3,Potassium [Moles/volume] in Serum or Plasma,Potassium SerPl-sCnc,Chem,3 +2345-7,Glucose [Mass/volume] in Serum or Plasma,Glucose SerPl-mCnc,Chem,4 +2951-2,Sodium [Moles/volume] in Serum or Plasma,Sodium SerPl-sCnc,Chem,5 +3094-0,Urea nitrogen [Mass/volume] in Serum or Plasma,BUN SerPl-mCnc,Chem,6 +2028-9,"Carbon dioxide, total [Moles/volume] in Serum or Plasma",CO2 SerPl-sCnc,Chem,7 +2075-0,Chloride [Moles/volume] in Serum or Plasma,Chloride SerPl-sCnc,Chem,8 +789-8,Erythrocytes [#/volume] in Blood by Automated count,RBC # Bld Auto,HEM/BC,9 diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/LoincTable/Loinc.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/LoincTable/Loinc.csv new file mode 100644 index 00000000000..215f236095b --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/LoincTable/Loinc.csv @@ -0,0 +1,16 @@ +"LOINC_NUM","COMPONENT" ,"PROPERTY","TIME_ASPCT","SYSTEM" ,"SCALE_TYP","METHOD_TYP" ,"CLASS" ,"VersionLastChanged","CHNG_TYPE","DefinitionDescription" ,"STATUS","CONSUMER_NAME","CLASSTYPE","FORMULA","SPECIES","EXMPL_ANSWERS","SURVEY_QUEST_TEXT" ,"SURVEY_QUEST_SRC" ,"UNITSREQUIRED","SUBMITTED_UNITS","RELATEDNAMES2" ,"SHORTNAME" ,"ORDER_OBS" ,"CDISC_COMMON_TESTS","HL7_FIELD_SUBFIELD_ID","EXTERNAL_COPYRIGHT_NOTICE" ,"EXAMPLE_UNITS","LONG_COMMON_NAME" ,"UnitsAndRange","DOCUMENT_SECTION","EXAMPLE_UCUM_UNITS","EXAMPLE_SI_UCUM_UNITS","STATUS_REASON","STATUS_TEXT","CHANGE_REASON_PUBLIC" ,"COMMON_TEST_RANK","COMMON_ORDER_RANK","COMMON_SI_TEST_RANK","HL7_ATTACHMENT_STRUCTURE","EXTERNAL_COPYRIGHT_LINK","PanelType","AskAtOrderEntry","AssociatedObservations" ,"VersionFirstReleased","ValidHL7AttachmentRequest" +"10013-1" ,"v2.68 R' wave amplitude.lead I" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-I; R wave Amp L-I; Random; Right; Voltage" ,"R' wave Amp L-I" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead I" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10014-9" ,"v2.68 R' wave amplitude.lead II" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"2; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-II; R wave Amp L-II; Random; Right; Voltage" ,"R' wave Amp L-II" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead II" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10015-6" ,"v2.68 R' wave amplitude.lead III" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"3; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-III; R wave Amp L-III; Random; Right; Voltage" ,"R' wave Amp L-III" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead III" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10016-4" ,"v2.68 R' wave amplitude.lead V1" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V1; R wave Amp L-V1; Random; Right; Voltage" ,"R' wave Amp L-V1" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V1" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"1001-7" ,"v2.68 DBG Ab" ,"Pr" ,"Pt" ,"Ser/Plas^donor" ,"Ord" , ,"BLDBK" ,"2.44" ,"MIN" , ,"ACTIVE", ,1 , , , , , , , ,"ABS; Aby; Antby; Anti; Antibodies; Antibody; Autoantibodies; Autoantibody; BLOOD BANK; Donna Bennett-Goodspeed; Donr; Ordinal; Pl; Plasma; Plsm; Point in time; QL; Qual; Qualitative; Random; Screen; SerP; SerPl; SerPl^donor; SerPlas; Serum; Serum or plasma; SR" ,"DBG Ab SerPl Donr Ql" ,"Observation", , , , ,"DBG Ab [Presence] in Serum or Plasma from donor" , , , , , , ,"The Property has been changed from ACnc to Pr (Presence) to reflect the new model for ordinal terms where results are based on presence or absence." ,0 ,0 ,0 , , , , , , , +"10017-2" ,"v2.68 R' wave amplitude.lead V2" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V2; R wave Amp L-V2; Random; Right; Voltage" ,"R' wave Amp L-V2" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V2" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10018-0" ,"v2.68 R' wave amplitude.lead V3" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V3; R wave Amp L-V3; Random; Right; Voltage" ,"R' wave Amp L-V3" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V3" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10019-8" ,"v2.68 R' wave amplitude.lead V4" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V4; R wave Amp L-V4; Random; Right; Voltage" ,"R' wave Amp L-V4" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V4" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10020-6" ,"v2.68 R' wave amplitude.lead V5" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V5; R wave Amp L-V5; Random; Right; Voltage" ,"R' wave Amp L-V5" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V5" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"61438-8" ,"v2.68 Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Find" ,"Pt" ,"^Patient" ,"Ord" ,"PhenX" ,"PHENX" ,"2.44" ,"MIN" , ,"TRIAL" , ,2 , , , ,"Each time you eat bread, toast or dinner rolls, how much do you usually eat?","PhenX.050201100100","N" , ,"Finding; Findings; How much bread in 30D; Last; Ordinal; Point in time; QL; Qual; Qualitative; Random; Screen" ,"How much bread in 30D PhenX", , , , , ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]", , , , , , , ,0 ,0 ,0 , , , , , , , +"10000-8" ,"v2.68 R wave duration.lead AVR" ,"Time" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; Durat; ECG; EKG.MEASUREMENTS; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave dur L-AVR; R wave dur L-AVR; Random; Right" ,"R wave dur L-AVR" ,"Observation", , , ,"s" ,"R wave duration in lead AVR" , , ,"s" , , , , ,0 ,0 ,0 , , , , , , , +"17787-3" ,"v2.68 Study report" ,"Find" ,"Pt" ,"Neck>Thyroid gland","Doc" ,"NM" ,"RAD" ,"2.61" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Document; Finding; Findings; Imaging; Point in time; Radiology; Random; Study report; Thy" ,"NM Thyroid Study report" ,"Both" , , , , ,"v2.68 NM Thyroid gland Study report" , , , , , , ,"Changed System from ""Thyroid"" for conformance with the LOINC/RadLex unified model.; Method of ""Radnuc"" was changed to ""NM"". The LOINC/RadLex Committee agreed to use a subset of the two-letter DICOM modality codes as the primary modality identifier." ,0 ,0 ,0 ,"IG exists" , , , ,"81220-6;72230-6" ,"1.0l" , +"17788-1" ,"v2.68 Large unstained cells/100 leukocytes" ,"NFr" ,"Pt" ,"Bld" ,"Qn" ,"Automated count","HEM/BC" ,"2.50" ,"MIN" ,"Part of auto diff output of Bayer H*3S; peroxidase negative cells too large to be classified as lymph or basophil" ,"ACTIVE", ,1 , , , , , ,"Y" ,"%" ,"100WBC; Auto; Automated detection; Blood; Cell; Cellularity; Elec; Elect; Electr; HEMATOLOGY/CELL COUNTS; Leuc; Leuk; Leukocyte; Lkcs; LUC; Number Fraction; Percent; Point in time; QNT; Quan; Quant; Quantitative; Random; WB; WBC; WBCs; White blood cell; White blood cells; Whole blood" ,"LUC/leuk NFr Bld Auto" ,"Observation", , , ,"%" ,"Large unstained cells/100 leukocytes in Blood by Automated count" , , ,"%" , , , , ,1894 ,0 ,1894 , , , , , ,"1.0l" , +"11488-4" ,"v2.68 Consultation note" ,"Find" ,"Pt" ,"{Setting}" ,"Doc" ,"{Role}" ,"DOC.ONTOLOGY","2.63" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Consult note; DOC.ONT; Document; Encounter; Evaluation and management; Evaluation and management note; Finding; Findings; notes; Point in time; Random; Visit note" ,"Consult note" ,"Both" , , , , ,"Consult note" , , , , , , ,"Edit made because this term is conformant to the Document Ontology axis values and therefore are being placed in this class.; Based on Clinical LOINC Committee decision during the September 2014 meeting, {Provider} was changed to {Author Type} to emphasize a greater breadth of potential document authors. At the September 2015 Clinical LOINC Committee meeting, the Committee decided to change {Author Type} to {Role} to align with the 'Role' axis name in the LOINC Document Ontology.; Because it is too difficult to maintain and because the distinction between documents and sections is not clear-cut nor necessary in most cases, the DOCUMENT_SECTION field has been deemed to have little value. The field has been set to null in the December 2017 release in preparation for removal in the December 2018 release. These changes were approved by the Clinical LOINC Committee.",0 ,0 ,0 ,"IG exists" , , , ,"81222-2;72231-4;81243-8","1.0j-a" ,"Y" +"47239-9" ,"v2.68 Reason for stopping HIV Rx" ,"Type" ,"Pt" ,"^Patient" ,"Nom" ,"Reported" ,"ART" ,"2.50" ,"MIN" ,"Reason for stopping antiretroviral therapy" ,"ACTIVE", ,2 , , , , , ,"N" , ,"AIDS; Anti-retroviral therapy; ART; Human immunodeficiency virus; Nominal; Point in time; Random; Treatment; Typ" ,"Reason for stopping HIV Rx" ,"Observation", , ,"Copyright © 2006 World Health Organization. Used with permission. Publications of the World Health Organization can be obtained from WHO Press, World Health Organization, 20 Avenue Appia, 1211 Geneva 27, Switzerland (tel: +41 22 791 2476; fax: +41 22 791 4857; email: bookorders@who.int). Requests for permission to reproduce or translate WHO publications – whether for sale or for noncommercial distribution – should be addressed to WHO Press, at the above address (fax: +41 22 791 4806; email: permissions@who.int). The designations employed and the presentation of the material in this publication do not imply the expression of any opinion whatsoever on the part of the World Health Organization concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries. Dotted lines on maps represent approximate border lines for which there may not yet be full agreement. The mention of specific companies or of certain manufacturers’ products does not imply that they are endorsed or recommended by the World Health Organization in preference to others of a similar nature that are not mentioned. Errors and omissions excepted, the names of proprietary products are distinguished by initial capital letters. All reasonable precautions have been taken by WHO to verify the information contained in this publication. However, the published material is being distributed without warranty of any kind, either express or implied. The responsibility for the interpretation and use of the material lies with the reader. In no event shall the World Health Organization be liable for damages arising from its use.", ,"Reason for stopping HIV treatment" , , , , , , , ,0 ,0 ,0 , ,"WHO_HIV" , , , ,"2.22" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/loinc.xml b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/loinc.xml new file mode 100644 index 00000000000..0212b1d705e --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v268/loinc.xml @@ -0,0 +1,543 @@ +<!-- +LOINC is a freely available international standard for tests, measurements, and observations. It is a well maintained, version independent code system. + +Use of LOINC is governed by the LOINC License: https://loinc.org/license/ + +This CodeSystem resource describes 'LOINC' independent of any particular version. There are notes about changes for version specific LOINC code system resources. + +Note that the following set of codes are defined by the LOINC code systems: + - the main LOINC codes + - the LOINC Answer codes (LA) and the LOINC Answer list codes (LL) + - the LOINC Part codes (LP) in the Multiaxial Hierarchy + - the LOINC Part codes (LP) for the properties + Note: there are license restrictions on the use of LOINC Part codes + - the LOINC Group codes (LG) + Note: presently the LOINC Group codes are used to identify these roll-up groups as ValueSets, but are not yet loaded as codes in the CodeSystem + +Servers may generate variants of this for the LOINC version(s) and features they support. + +--> + +<CodeSystem xmlns="http://hl7.org/fhir"> + <id value="loinc"/> + + <!-- + This url is unchanged for all versions of LOINC. There can only be one correct Code System resource for each value of the version attribute (at least, only one per server). + --> + <url value="http://loinc.org"/> + + <!-- the HL7 v3 OID assigned to LOINC --> + <identifier> + <system value="urn:ietf:rfc:3986"/> + <value value="urn:oid:2.16.840.1.113883.6.1"/> + </identifier> + +<!-- <version value="2.68"/>--> + + <!-- + If a specific version is specified, the name should carry this information (e.g. LOINC_270). + --> + <name value="LOINC"/> + <title value="LOINC Code System (Testing Copy)"/> + <status value="active"/> + <experimental value="false"/> + + <publisher value="Regenstrief Institute, Inc."/> + <contact> + <telecom> + <system value="url" /> + <value value="http://loinc.org"/> + </telecom> + </contact> + + <!-- + <date value=2021-06/> + --> + <description value="LOINC is a freely available international standard for tests, measurements, and observations"/> + <copyright value="This material contains content from LOINC (http://loinc.org). LOINC is copyright ©1995-2021, Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee and is available at no cost under the license at http://loinc.org/license. LOINC® is a registered United States trademark of Regenstrief Institute, Inc."/> + <caseSensitive value="false"/> + + <valueSet value="http://loinc.org/vs"/> + + <!-- + It's at the discretion of servers whether to present fragments of LOINC hierarchically or not, when using the code system resource. But, if they are hierarchical, the Hierarchy SHALL be based on the is-a relationship that is derived from the LOINC Multiaxial Hierarchy. + --> + <hierarchyMeaning value="is-a"/> + <compositional value="false"/> <!-- no compositional grammar in LOINC --> + <versionNeeded value="false"/> + + <!-- + This canonical definition of LOINC does not include the LOINC content, which is distributed separately for portability. + + Servers may choose to include fragments of LOINC for illustration purposes. + --> + <content value="not-present"/> + + <!-- + <count value="65000"/> + If working with a specific version, you could nominate a count of the total number of concepts (including the answers, Hierarchy, etc.). In this canonical definition we do not. + --> + + <!-- + FILTERS + Generally defined filters for specifying value sets + In LOINC, all the properties can also be used as filters, but they are not defined explicitly as filters. + Parent/child properties are as defined by FHIR. Note that at this time the LOINC code system resource does not support ancestor/descendant relationships. + + For illustration purposes, consider this slice of the LOINC Multiaxial Hierarchy when reading the descriptions below: + + Laboratory [LP29693-6] + Microbiology and Antimicrobial susceptibility [LP343406-7] + Microbiology [LP7819-8] + Microorganism [LP14559-6] + Virus [LP14855-8] + Zika virus [LP200137-0] + Zika virus RNA | XXX [LP203271-4] + Zika virus RNA | XXX | Microbiology [LP379670-5] + Zika virus RNA [Presence] in Unspecified specimen by Probe and target amplification method [79190-5] + + Language Note: The filters defined here are specified using the default LOINC language - English (US). Requests are meant to be specified and interpreted on the English version. The return can be in a specified language (if supported by the server). But note that not all filters/properties have language translations available. + --> + <filter> + <code value="parent"/> + <description value="Allows for the selection of a set of codes based on their appearance in the LOINC Multiaxial Hierarchy. Parent selects immediate parent only. For example, the code '79190-5' has the parent 'LP379670-5'"/> + <operator value="="/> + <value value="A Part code"/> + </filter> + <filter> + <code value="child"/> + <description value="Allows for the selection of a set of codes based on their appearance in the LOINC Multiaxial Hierarchy. Child selects immediate children only. For example, the code 'LP379670-5' has the child '79190-5'. Only LOINC Parts have children; LOINC codes do not have any children because they are leaf nodes."/> + <operator value="="/> + <value value="A comma separated list of Part or LOINC codes"/> + </filter> + <filter> + <code value="copyright"/> + <description value="Allows for the inclusion or exclusion of LOINC codes that include 3rd party copyright notices. LOINC = only codes with a sole copyright by Regenstrief. 3rdParty = only codes with a 3rd party copyright in addition to the one from Regenstrief"/> + <operator value="="/> + <value value="LOINC | 3rdParty"/> + </filter> + + <!-- + PROPERTIES + There are 4 kinds of properties that apply to all LOINC codes: + 1. FHIR: display, designation; these are not described here since they are inherent in the specification + 2. Infrastructural: defined by FHIR, but documented here for the LOINC Multiaxial Hierarchy + 3. Primary LOINC properties: defined by the main LOINC table + 4. Secondary LOINC properties: defined by the LoincPartLink table + Additionally, there are 2 kinds of properties specific to Document ontology and Radiology codes, respectively: + 1. LOINC/RSNA Radiology Playbook properties + 2. Document Ontology properties + --> + <!-- + Infrastructural properties - inherited from FHIR, but documented here for the LOINC Multiaxial Hierarchy. + --> + + <property> + <code value="parent"/> + <uri value="http://hl7.org/fhir/concept-properties#parent"/> + <description value="A parent code in the Multiaxial Hierarchy"/> + <type value="code"/> + </property> + <property> + <code value="child"/> + <uri value="http://hl7.org/fhir/concept-properties#child"/> + <description value="A child code in the Multiaxial Hierarchy"/> + <type value="code"/> + </property> + + <!-- + Primary LOINC properties. + These apply to the main LOINC codes, but not the Multiaxial Hierarchy, Answer lists, or the Part codes. + Notes: + In the LOINC code system resource, the display element = LONG_COMMON_NAME + Many properties are specified as type "Coding", which allows use of LOINC Part codes (LP-) and the display text. LOINC Parts and their associations to LOINC terms are published in the LOINC Part File. + The properties defined here follow the guidance of the LOINC Users' Guide, which states that they should be expressed with the LOINC attributes contained in the LOINC Table. Properties that are not defined in the LOINC Table use FHIR-styled names. + --> + + <property> + <code value="STATUS"/> + <uri value="http://loinc.org/property/STATUS"/> + <description value="Status of the term. Within LOINC, codes with STATUS=DEPRECATED are considered inactive. Current values: ACTIVE, TRIAL, DISCOURAGED, and DEPRECATED"/> + <type value="string"/> + </property> + <property> + <code value="COMPONENT"/> + <uri value="http://loinc.org/property/COMPONENT"/> + <description value="First major axis-component or analyte: Analyte Name, Analyte sub-class, Challenge"/> + <type value="Coding"/> + </property> + <property> + <code value="PROPERTY"/> + <uri value="http://loinc.org/property/PROPERTY"/> + <description value="Second major axis-property observed: Kind of Property (also called kind of quantity)"/> + <type value="Coding"/> + </property> + <property> + <code value="TIME_ASPCT"/> + <uri value="http://loinc.org/property/TIME_ASPCT"/> + <description value="Third major axis-timing of the measurement: Time Aspect (Point or moment in time vs. time interval)"/> + <type value="Coding"/> + </property> + <property> + <code value="SYSTEM"/> + <uri value="http://loinc.org/property/SYSTEM"/> + <description value="Fourth major axis-type of specimen or system: System (Sample) Type"/> + <type value="Coding"/> + </property> + <property> + <code value="SCALE_TYP"/> + <uri value="http://loinc.org/property/SCALE_TYP"/> + <description value="Fifth major axis-scale of measurement: Type of Scale"/> + <type value="Coding"/> + </property> + <property> + <code value="METHOD_TYP"/> + <uri value="http://loinc.org/property/METHOD_TYP"/> + <description value="Sixth major axis-method of measurement: Type of Method"/> + <type value="Coding"/> + </property> + <property> + <code value="CLASS"/> + <uri value="http://loinc.org/property/CLASS"/> + <description value="An arbitrary classification of terms for grouping related observations together"/> + <type value="Coding"/> + </property> + <property> + <code value="VersionLastChanged"/> + <uri value="http://loinc.org/property/VersionLastChanged"/> + <description value="The LOINC version number in which the record has last changed. For new records, this field contains the same value as the VersionFirstReleased property."/> + <type value="string"/> + </property> + <property> + <code value="CLASSTYPE"/> + <uri value="http://loinc.org/property/CLASSTYPE"/> + <description value="1=Laboratory class; 2=Clinical class; 3=Claims attachments; 4=Surveys"/> + <type value="string"/> + </property> + <property> + <code value="ORDER_OBS"/> + <uri value="http://loinc.org/property/ORDER_OBS"/> + <description value="Provides users with an idea of the intended use of the term by categorizing it as an order only, observation only, or both"/> + <type value="string"/> + </property> + <property> + <code value="HL7_ATTACHMENT_STRUCTURE"/> + <uri value="http://loinc.org/property/HL7_ATTACHMENT_STRUCTURE"/> + <description value="This property is populated in collaboration with the HL7 Payer-Provider Exchange (PIE) Work Group (previously called Attachments Work Group) as described in the HL7 Attachment Specification: Supplement to Consolidated CDA Templated Guide."/> + <type value="string"/> + </property> + <property> + <code value="VersionFirstReleased"/> + <uri value="http://loinc.org/property/VersionFirstReleased"/> + <description value="This is the LOINC version number in which this LOINC term was first published."/> + <type value="string"/> + </property> + <property> + <code value="PanelType"/> + <uri value="http://loinc.org/property/PanelType"/> + <description value="For LOINC terms that are panels, this attribute classifies them as a 'Convenience group', 'Organizer', or 'Panel'"/> + <type value="string"/> + </property> + <property> + <code value="ValidHL7AttachmentRequest"/> + <uri value="http://loinc.org/property/ValidHL7AttachmentRequest"/> + <description value="A value of Y in this field indicates that this LOINC code can be sent by a payer as part of an HL7 Attachment request for additional information."/> + <type value="string"/> + </property> + <property> + <code value="DisplayName"/> + <uri value="http://loinc.org/property/DisplayName"/> + <description value="A name that is more 'clinician-friendly' compared to the current LOINC Short Name, Long Common Name, and Fully Specified Name. It is created algorithmically from the manually crafted display text for each Part and is generally more concise than the Long Common Name."/> + <type value="string"/> + </property> + <property> + <code value="answer-list"/> + <uri value="http://loinc.org/property/answer-list"/> + <description value="An answer list associated with this LOINC code (if there are matching answer lists defined)."/> + <type value="Coding"/> + </property> + + <!-- + Secondary LOINC properties. + These properties also apply to the main LOINC codes, but not the Multiaxial Hierarchy, Answer lists, or the Part codes. + Notes: + These properties are defined in the LoincPartLink table. + --> + + <property> + <code value="analyte"/> + <uri value="http://loinc.org/property/analyte"/> + <description value="First sub-part of the Component, i.e., the part of the Component before the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-core"/> + <uri value="http://loinc.org/property/analyte-core"/> + <description value="The primary part of the analyte without the suffix"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-suffix"/> + <uri value="http://loinc.org/property/analyte-suffix"/> + <description value="The suffix part of the analyte, if present, e.g., Ab or DNA"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-numerator"/> + <uri value="http://loinc.org/property/analyte-numerator"/> + <description value="The numerator part of the analyte, i.e., everything before the slash in analytes that contain a divisor"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-divisor"/> + <uri value="http://loinc.org/property/analyte-divisor"/> + <description value="The divisor part of the analyte, if present, i.e., after the slash and before the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-divisor-suffix"/> + <uri value="http://loinc.org/property/analyte-divisor-suffix"/> + <description value="The suffix part of the divisor, if present"/> + <type value="Coding"/> + </property> + <property> + <code value="challenge"/> + <uri value="http://loinc.org/property/challenge"/> + <description value="Second sub-part of the Component, i.e., after the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="adjustment"/> + <uri value="http://loinc.org/property/adjustment"/> + <description value="Third sub-part of the Component, i.e., after the second carat"/> + <type value="Coding"/> + </property> + <property> + <code value="count"/> + <uri value="http://loinc.org/property/count"/> + <description value="Fourth sub-part of the Component, i.e., after the third carat"/> + <type value="Coding"/> + </property> + <property> + <code value="time-core"/> + <uri value="http://loinc.org/property/time-core"/> + <description value="The primary part of the Time"/> + <type value="Coding"/> + </property> + <property> + <code value="time-modifier"/> + <uri value="http://loinc.org/property/time-modifier"/> + <description value="The modifier of the Time value, such as mean or max"/> + <type value="Coding"/> + </property> + <property> + <code value="system-core"/> + <uri value="http://loinc.org/property/system-core"/> + <description value="The primary part of the System, i.e., without the super system"/> + <type value="Coding"/> + </property> + <property> + <code value="super-system"/> + <uri value="http://loinc.org/property/super-system"/> + <description value="The super system part of the System, if present. The super system represents the source of the specimen when the source is someone or something other than the patient whose chart the result will be stored in. For example, fetus is the super system for measurements done on obstetric ultrasounds, because the fetus is being measured and that measurement is being recorded in the patient's (mother's) chart."/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-gene"/> + <uri value="http://loinc.org/property/analyte-gene"/> + <description value="The specific gene represented in the analyte"/> + <type value="Coding"/> + </property> + <property> + <code value="category"/> + <uri value="http://loinc.org/property/category"/> + <description value="A single LOINC term can be assigned one or more categories based on both programmatic and manual tagging. Category properties also utilize LOINC Class Parts."/> + <type value="Coding"/> + </property> + <property> + <code value="search"/> + <uri value="http://loinc.org/property/search"/> + <description value="Synonyms, fragments, and other Parts that are linked to a term to enable more encompassing search results."/> + <type value="Coding"/> + </property> + + <!-- + LOINC/RSNA Radiology Playbook properties. These apply only to terms in the LOINC/RSNA Radiology Playbook File. + Notes: + Properties are specified as type "Coding", which are represented by LOINC Part codes (LP-) and their display names. + The attribute names here use FHIR styled names rather than their original LOINC style names because the original names contain periods. + --> + + <property> + <code value="rad-modality-modality-type"/> + <uri value="http://loinc.org/property/rad-modality-modality-type"/> + <description value="Modality is used to represent the device used to acquire imaging information."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-modality-modality-subtype"/> + <uri value="http://loinc.org/property/rad-modality-modality-subtype"/> + <description value="Modality subtype may be optionally included to signify a particularly common or evocative configuration of the modality."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-region-imaged"/> + <uri value="http://loinc.org/property/rad-anatomic-location-region-imaged"/> + <description value="The Anatomic Location Region Imaged attribute is used in two ways: as a coarse-grained descriptor of the area imaged and a grouper for finding related imaging exams; or, it is used just as a grouper."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-imaging-focus"/> + <uri value="http://loinc.org/property/rad-anatomic-location-imaging-focus"/> + <description value="The Anatomic Location Imaging Focus is a more fine-grained descriptor of the specific target structure of an imaging exam. In many areas, the focus should be a specific organ."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-laterality-presence"/> + <uri value="http://loinc.org/property/rad-anatomic-location-laterality-presence"/> + <description value="Radiology Exams that require laterality to be specified in order to be performed are signified with an Anatomic Location Laterality Presence attribute set to 'True'"/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-laterality"/> + <uri value="http://loinc.org/property/rad-anatomic-location-laterality"/> + <description value="Radiology exam Laterality is specified as one of: Left, Right, Bilateral, Unilateral, Unspecified"/> + <type value="Coding"/> + </property> + <property> + <code value="rad-view-aggregation"/> + <uri value="http://loinc.org/property/rad-view-aggregation"/> + <description value="Aggregation describes the extent of the imaging performed, whether in quantitative terms (e.g., '3 or more views') or subjective terms (e.g., 'complete')."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-view-view-type"/> + <uri value="http://loinc.org/property/rad-view-view-type"/> + <description value="View type names specific views, such as 'lateral' or 'AP'."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-maneuver-maneuver-type"/> + <uri value="http://loinc.org/property/rad-maneuver-maneuver-type"/> + <description value="Maneuver type indicates an action taken with the goal of elucidating or testing a dynamic aspect of the anatomy."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-timing"/> + <uri value="http://loinc.org/property/rad-timing"/> + <description value="The Timing/Existence property used in conjunction with pharmaceutical and maneuver properties. It specifies whether or not the imaging occurs in the presence of the administered pharmaceutical or a maneuver designed to test some dynamic aspect of anatomy or physiology ."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-pharmaceutical-substance-given"/> + <uri value="http://loinc.org/property/rad-pharmaceutical-substance-given"/> + <description value="The Pharmaceutical Substance Given specifies administered contrast agents, radiopharmaceuticals, medications, or other clinically important agents and challenges during the imaging procedure."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-pharmaceutical-route"/> + <uri value="http://loinc.org/property/rad-pharmaceutical-route"/> + <description value="Route specifies the route of administration of the pharmaceutical."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-reason-for-exam"/> + <uri value="http://loinc.org/property/rad-reason-for-exam"/> + <description value="Reason for exam is used to describe a clinical indication or a purpose for the study."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-presence"/> + <uri value="http://loinc.org/property/rad-guidance-for-presence"/> + <description value="Guidance for.Presence indicates when a procedure is guided by imaging."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-approach"/> + <uri value="http://loinc.org/property/rad-guidance-for-approach"/> + <description value="Guidance for.Approach refers to the primary route of access used, such as percutaneous, transcatheter, or transhepatic."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-action"/> + <uri value="http://loinc.org/property/rad-guidance-for-action"/> + <description value="Guidance for.Action indicates the intervention performed, such as biopsy, aspiration, or ablation."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-object"/> + <uri value="http://loinc.org/property/rad-guidance-for-object"/> + <description value="Guidance for.Object specifies the target of the action, such as mass, abscess or cyst."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-subject"/> + <uri value="http://loinc.org/property/rad-subject"/> + <description value="Subject is intended for use when there is a need to distinguish between the patient associated with an imaging study, and the target of the study."/> + <type value="Coding"/> + </property> + + <!-- + Document Ontology properties. + These apply only to terms in the LOINC Document Ontology File + Notes + Properties are specified as type "Coding", which are represented by LOINC Part codes (LP-) and their display names. + The attribute names here use FHIR styled names rather than their original LOINC style names because those contain periods. + --> + + <property> + <code value="document-kind"/> + <uri value="http://loinc.org/property/document-kind"/> + <description value="Characterizes the general structure of the document at a macro level."/> + <type value="Coding"/> + </property> + <property> + <code value="document-role"/> + <uri value="http://loinc.org/property/document-role"/> + <description value="Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty."/> + <type value="Coding"/> + </property> + <property> + <code value="document-setting"/> + <uri value="http://loinc.org/property/document-setting"/> + <description value="Setting is a modest extension of CMS’s coarse definition of care settings, such as outpatient, hospital, etc. Setting is not equivalent to location, which typically has more locally defined meanings."/> + <type value="Coding"/> + </property> + <property> + <code value="document-subject-matter-domain"/> + <uri value="http://loinc.org/property/document-subject-matter-domain"/> + <description value="Characterizes the clinical domain that is the subject of the document. For example, Internal Medicine, Neurology, Physical Therapy, etc."/> + <type value="Coding"/> + </property> + <property> + <code value="document-type-of-service"/> + <uri value="http://loinc.org/property/document-type-of-service"/> + <description value="Characterizes the kind of service or activity provided to/for the patient (or other subject of the service) that is described in the document."/> + <type value="Coding"/> + </property> + + <!-- Answer list related properties --> + <property> + <code value="answers-for"/> + <uri value="http://loinc.org/property/answers-for"/> + <description value="A LOINC Code for which this answer list is used."/> + <type value="Coding"/> + </property> + + <!-- Note for future consideration. These are properties of LA codes in the context of a particular list. Not global properties. + <property> + <code value="sequence"/> + <uri value="http://loinc.org/property/sequence"/> + <description value="Sequence Number of a answer in a set of answers (LA- codes only)"/> + <type value="integer"/> + </property> + <property> + <code value="score"/> + <uri value="http://loinc.org/property/score"/> + <description value="Score assigned to an answer (LA- codes only)"/> + <type value="integer"/> + </property> + --> +</CodeSystem> + + diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/AnswerFile/AnswerList.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/AnswerFile/AnswerList.csv new file mode 100644 index 00000000000..31600cdab70 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/AnswerFile/AnswerList.csv @@ -0,0 +1,12 @@ +"AnswerListId","AnswerListName" ,"AnswerListOID" ,"ExtDefinedYN","ExtDefinedAnswerListCodeSystem","ExtDefinedAnswerListLink" ,"AnswerStringId","LocalAnswerCode","LocalAnswerCodeSystem","SequenceNumber","DisplayText" ,"ExtCodeId","ExtCodeDisplayName" ,"ExtCodeSystem" ,"ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" ,"SubsequentTextPrompt","Description","Score" +"LL1000-0" ,"v2.69 PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13825-7" ,"1" , ,1 ,"v2.69 1 slice or 1 dinner roll" , , , , , , , , +"LL1000-0" ,"v2.69 PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13838-0" ,"2" , ,2 ,"v2.69 2 slices or 2 dinner rolls" , , , , , , , , +"LL1000-0" ,"v2.69 PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13892-7" ,"3" , ,3 ,"v2.69 More than 2 slices or 2 dinner rolls", , , , , , , , +"LL1001-8" ,"v2.69 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA6270-8" ,"00" , ,1 ,"v2.69 Never" , , , , , , , , +"LL1001-8" ,"v2.69 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13836-4" ,"01" , ,2 ,"v2.69 1-3 times per month" , , , , , , , , +"LL1001-8" ,"v2.69 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13834-9" ,"02" , ,3 ,"v2.69 1-2 times per week" , , , , , , , , +"LL1001-8" ,"v2.69 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13853-9" ,"03" , ,4 ,"v2.69 3-4 times per week" , , , , , , , , +"LL1001-8" ,"v2.69 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13860-4" ,"04" , ,5 ,"v2.69 5-6 times per week" , , , , , , , , +"LL1001-8" ,"v2.69 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13827-3" ,"05" , ,6 ,"v2.69 1 time per day" , , , , , , , , +"LL1001-8" ,"v2.69 PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA4389-8" ,"97" , ,11 ,"v2.69 Refused" ,"443390004","Refused (qualifier value)","http://snomed.info/sct","http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College", , , +"LL1892-0" ,"v2.69 ICD-9_ICD-10" ,"1.3.6.1.4.1.12009.10.1.1069","Y" , ,"http://www.cdc.gov/nchs/icd.htm", , , , ,"v2.69 " , , , , , , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv new file mode 100644 index 00000000000..820602c77ad --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/AnswerFile/LoincAnswerListLink.csv @@ -0,0 +1,11 @@ +"LoincNumber","LongCommonName" ,"AnswerListId","AnswerListName" ,"AnswerListLinkType","ApplicableContext" +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]","LL1000-0" ,"PhenX05_13_30D bread amt","NORMATIVE" , +"10061-0" ,"S' wave amplitude in lead I" ,"LL1311-1" ,"PhenX12_44" ,"EXAMPLE" , +"10331-7" ,"Rh [Type] in Blood" ,"LL360-9" ,"Pos|Neg" ,"EXAMPLE" , +"10389-5" ,"Blood product.other [Type]" ,"LL2413-4" ,"Othr bld prod" ,"EXAMPLE" , +"10390-3" ,"Blood product special preparation [Type]" ,"LL2422-5" ,"Blood prod treatment" ,"EXAMPLE" , +"10393-7" ,"Factor IX given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10395-2" ,"Factor VIII given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10401-8" ,"Immune serum globulin given [Type]" ,"LL2421-7" ,"IM/IV" ,"EXAMPLE" , +"10410-9" ,"Plasma given [Type]" ,"LL2417-5" ,"Plasma type" ,"EXAMPLE" , +"10568-4" ,"Clarity of Semen" ,"LL2427-4" ,"Clear/Opales/Milky" ,"EXAMPLE" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/ConsumerName/ConsumerName.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/ConsumerName/ConsumerName.csv new file mode 100644 index 00000000000..b4ec2907985 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/ConsumerName/ConsumerName.csv @@ -0,0 +1,6 @@ +"LoincNumber","ConsumerName" +"61438-8","Consumer Name 61438-8" +,"Consumer Name X" +47239-9","" +"17787-3","Consumer Name 17787-3" +"38699-5","1,1-Dichloroethane, Air" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/DocumentOntology/DocumentOntology.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/DocumentOntology/DocumentOntology.csv new file mode 100644 index 00000000000..f857d7f297b --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/DocumentOntology/DocumentOntology.csv @@ -0,0 +1,10 @@ +"LoincNumber","PartNumber","PartTypeName","PartSequenceOrder","PartName" +"11488-4","LP173418-7","Document.Kind","1","Note" +"11488-4","LP173110-0","Document.TypeOfService","1","Consultation" +"11488-4","LP173061-5","Document.Setting","1","{Setting}" +"11488-4","LP187187-2","Document.Role","1","{Role}" +"11490-0","LP173418-7","Document.Kind","1","Note" +"11490-0","LP173221-5","Document.TypeOfService","1","Discharge summary" +"11490-0","LP173061-5","Document.Setting","1","{Setting}" +"11490-0","LP173084-7","Document.Role","1","Physician" +"11492-6","LP173418-7","Document.Kind","1","Note" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/GroupFile/Group.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/GroupFile/Group.csv new file mode 100644 index 00000000000..66f5561ea1c --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/GroupFile/Group.csv @@ -0,0 +1,2 @@ +"ParentGroupId","GroupId","Group","Archetype","Status","VersionFirstReleased" +"LG100-4","LG1695-8","1,4-Dichlorobenzene|MCnc|Pt|ANYBldSerPl","","Active","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/GroupFile/GroupLoincTerms.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/GroupFile/GroupLoincTerms.csv new file mode 100644 index 00000000000..04c19759cfb --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/GroupFile/GroupLoincTerms.csv @@ -0,0 +1,3 @@ +"Category","GroupId","Archetype","LoincNumber","LongCommonName" +"Flowsheet","LG1695-8","","17424-3","1,4-Dichlorobenzene [Mass/volume] in Blood" +"Flowsheet","LG1695-8","","13006-2","1,4-Dichlorobenzene [Mass/volume] in Serum or Plasma" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/GroupFile/ParentGroup.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/GroupFile/ParentGroup.csv new file mode 100644 index 00000000000..734a86c43dd --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/GroupFile/ParentGroup.csv @@ -0,0 +1,2 @@ +"ParentGroupId","ParentGroup","Status" +"LG100-4","Chem_DrugTox_Chal_Sero_Allergy<SAME:Comp|Prop|Tm|Syst (except intravascular and urine)><ANYBldSerPlas,ANYUrineUrineSed><ROLLUP:Method>","ACTIVE" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv new file mode 100644 index 00000000000..30bb5209e9f --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/ImagingDocuments/ImagingDocumentCodes.csv @@ -0,0 +1,10 @@ +"LOINC_NUM","LONG_COMMON_NAME" +"11525-3","US Pelvis Fetus for pregnancy" +"17787-3","v2.69 NM Thyroid gland Study report" +"18744-3","Bronchoscopy study" +"18746-8","Colonoscopy study" +"18748-4","Diagnostic imaging study" +"18751-8","Endoscopy study" +"18753-4","Flexible sigmoidoscopy study" +"24531-6","US Retroperitoneum" +"24532-4","US Abdomen RUQ" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv new file mode 100644 index 00000000000..c79b3197490 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/LinguisticVariants.csv @@ -0,0 +1,9 @@ +"ID","ISO_LANGUAGE","ISO_COUNTRY","LANGUAGE_NAME","PRODUCER" +"5","zh","CN","Chinese (CHINA)","Lin Zhang, A LOINC volunteer from China" +"7","es","AR","Spanish (ARGENTINA)","Conceptum Medical Terminology Center" +"8","fr","CA","French (CANADA)","Canada Health Infoway Inc." +,"de","AT","German (AUSTRIA)","ELGA, Austria" +"88",,"AT","German (AUSTRIA)","ELGA, Austria" +"89","de",,"German (AUSTRIA)","ELGA, Austria" +"90","de","AT",,"ELGA, Austria" +"24","de","AT","German (AUSTRIA)","ELGA, Austria" \ No newline at end of file diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv new file mode 100644 index 00000000000..c6882d47504 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/deAT24LinguisticVariant.csv @@ -0,0 +1,4 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","Entlassungsbrief Ärztlich","Ergebnis","Zeitpunkt","{Setting}","Dokument","Dermatologie","DOC.ONTOLOGY","de shortname","de long common name","de related names 2","de linguistic variant display name" +"43730-1","","","","","","","","","","EBV-DNA qn. PCR","EBV-DNA quantitativ PCR" +"17787-3","","","","","","","","","","CoV OC43 RNA ql/SM P","Coronavirus OC43 RNA ql. /Sondermaterial PCR" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv new file mode 100644 index 00000000000..fa09e0cb242 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/frCA8LinguisticVariant.csv @@ -0,0 +1,6 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif","Immunofluorescence","Sérologie","","","","" +"11704-4","Gliale nucléaire de type 1 , IgG","Titre","Temps ponctuel","LCR","Quantitatif","Immunofluorescence","Sérologie","","","","" +,"Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif",,,"","","","" +"17787-3","Virus respiratoire syncytial bovin","Présence-Seuil","Temps ponctuel","XXX","Ordinal","Culture spécifique à un microorganisme","Microbiologie","","","","" +"17788-1","Cellules de Purkinje cytoplasmique type 2 , IgG","Titre","Temps ponctuel","Sérum","Quantitatif",,,"","","","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv new file mode 100644 index 00000000000..48d07d9fdc3 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LinguisticVariants/zhCN5LinguisticVariant.csv @@ -0,0 +1,9 @@ +"LOINC_NUM","COMPONENT","PROPERTY","TIME_ASPCT","SYSTEM","SCALE_TYP","METHOD_TYP","CLASS","SHORTNAME","LONG_COMMON_NAME","RELATEDNAMES2","LinguisticVariantDisplayName" +"61438-8","血流速度.收缩期.最大值","速度","时间点","大脑中动脉","定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"11704-4","血流速度.收缩期.最大值","速度","时间点","动脉导管","定量型","超声.多普勒","产科学检查与测量指标.超声","","","动态 动脉管 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"17787-3","血流速度.收缩期.最大值","速度","时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"61438-6",,"速度","时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"10000-8","血流速度.收缩期.最大值",,"时间点","二尖瓣^胎儿","定量型","超声.多普勒","产科学检查与测量指标.超声","","","僧帽瓣 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 时刻;随机;随意;瞬间 流 流量;流速;流体 胎;超系统 - 胎儿 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"17788-1","血流速度.收缩期.最大值","速度",,"大脑中动脉","定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"11488-4","血流速度.收缩期.最大值","速度","时间点",,"定量型","超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" +"47239-9","血流速度.收缩期.最大值","速度","时间点","大脑中动脉",,"超声.多普勒","产科学检查与测量指标.超声","","","Cereb 动态 可用数量表示的;定量性;数值型;数量型;连续数值型标尺 大脑(Cerebral) 时刻;随机;随意;瞬间 术语""cerebral""指的是主要由中枢半球(大脑皮质和基底神经节)组成的那部分脑结构 流 流量;流速;流体 血;全血 血流量;血液流量 速度(距离/时间);速率;速率(距离/时间)","" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv new file mode 100644 index 00000000000..d8cf83cd09e --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LoincIeeeMedicalDeviceCodeMappingTable/LoincIeeeMedicalDeviceCodeMappingTable.csv @@ -0,0 +1,10 @@ +LOINC_NUM,LOINC_LONG_COMMON_NAME,IEEE_CF_CODE10,IEEE_REFID,IEEE_DESCRIPTION,IEEE_DIM,IEEE_UOM_UCUM +11556-8,Oxygen [Partial pressure] in Blood,160116,MDC_CONC_PO2_GEN,,LMT-2L-2 LMT-2L-2,kPa mm[Hg] +11557-6,Carbon dioxide [Partial pressure] in Blood,160064,MDC_CONC_PCO2_GEN,,LMT-2L-2 LMT-2L-2,kPa mm[Hg] +11558-4,pH of Blood,160004,MDC_CONC_PH_GEN,,[pH],[pH] +12961-9,Urea nitrogen [Mass/volume] in Arterial blood,160080,MDC_CONC_UREA_ART,,ML-3 NL-3,mg/dL mmol/L +14749-6,Glucose [Moles/volume] in Serum or Plasma,160196,MDC_CONC_GLU_VENOUS_PLASMA,Plasma glucose concentration taken from venous,NL-3 ,mmol/L +14749-6,Glucose [Moles/volume] in Serum or Plasma,160368,MDC_CONC_GLU_UNDETERMINED_PLASMA,Plasma glucose concentration taken from undetermined sample source,NL-3 ,mmol/L +15074-8,Glucose [Moles/volume] in Blood,160020,MDC_CONC_GLU_GEN,,NL-3,mmol/L +15074-8,Glucose [Moles/volume] in Blood,160364,MDC_CONC_GLU_UNDETERMINED_WHOLEBLOOD,Whole blood glucose concentration taken from undetermined sample source,NL-3 ,mmol/L +17861-6,Calcium [Mass/volume] in Serum or Plasma,160024,MDC_CONC_CA_GEN,,ML-3,mg/dL diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv new file mode 100644 index 00000000000..0d02ad7cb0b --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LoincRsnaRadiologyPlaybook/LoincRsnaRadiologyPlaybook.csv @@ -0,0 +1,10 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartTypeName" ,"PartName" ,"PartSequenceOrder","RID" ,"PreferredName" ,"RPID" ,"LongName" +"17787-3" ,"v2.69 NM Thyroid gland Study report","LP199995-4","Rad.Anatomic Location.Region Imaged","Neck" ,"A" ,"RID7488" ,"neck" ,"" ,"" +"17787-3" ,"v2.69 NM Thyroid gland Study report","LP206648-0","Rad.Anatomic Location.Imaging Focus","Thyroid gland" ,"A" ,"RID7578" ,"thyroid gland" ,"" ,"" +"17787-3" ,"v2.69 NM Thyroid gland Study report","LP208891-4","Rad.Modality.Modality type" ,"NM" ,"A" ,"RID10330","nuclear medicine imaging","" ,"" +"24531-6" ,"v2.69 US Retroperitoneum" ,"LP207608-3","Rad.Modality.Modality type" ,"US" ,"A" ,"RID10326","Ultrasound" ,"RPID2142","US Retroperitoneum" +"24531-6" ,"v2.69 US Retroperitoneum" ,"LP199943-4","Rad.Anatomic Location.Imaging Focus","Retroperitoneum" ,"A" ,"RID431" ,"RETROPERITONEUM" ,"RPID2142","US Retroperitoneum" +"24531-6" ,"v2.69 US Retroperitoneum" ,"LP199956-6","Rad.Anatomic Location.Region Imaged","Abdomen" ,"A" ,"RID56" ,"Abdomen" ,"RPID2142","US Retroperitoneum" +"24532-4" ,"v2.69 US Abdomen RUQ" ,"LP199956-6","Rad.Anatomic Location.Region Imaged","Abdomen" ,"A" ,"RID56" ,"Abdomen" ,"" ,"" +"24532-4" ,"v2.69 US Abdomen RUQ" ,"LP207608-3","Rad.Modality.Modality type" ,"US" ,"A" ,"RID10326","Ultrasound" ,"" ,"" +"24532-4" ,"v2.69 US Abdomen RUQ" ,"LP208105-9","Rad.Anatomic Location.Imaging Focus","Right upper quadrant","A" ,"RID29994","Right upper quadrant" ,"" ,"" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv new file mode 100644 index 00000000000..72d95485a58 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/LoincUniversalLabOrdersValueSet/LoincUniversalLabOrdersValueSet.csv @@ -0,0 +1,10 @@ +"LOINC_NUM","LONG_COMMON_NAME","ORDER_OBS" +"42176-8","1,3 beta glucan [Mass/volume] in Serum","Both" +"53835-5","1,5-Anhydroglucitol [Mass/volume] in Serum or Plasma","Both" +"31019-3","10-Hydroxycarbazepine [Mass/volume] in Serum or Plasma","Both" +"6765-2","17-Hydroxypregnenolone [Mass/volume] in Serum or Plasma","Both" +"1668-3","17-Hydroxyprogesterone [Mass/volume] in Serum or Plasma","Both" +"32854-2","17-Hydroxyprogesterone [Presence] in DBS","Both" +"49054-0","25-Hydroxycalciferol [Mass/volume] in Serum or Plasma","Both" +"62292-8","25-Hydroxyvitamin D2+25-Hydroxyvitamin D3 [Mass/volume] in Serum or Plasma","Both" +"44907-4","5-Hydroxyindoleacetate panel - 24 hour Urine","Order" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv new file mode 100644 index 00000000000..527b8fd5cae --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/MultiAxialHierarchy/MultiAxialHierarchy.csv @@ -0,0 +1,10 @@ +PATH_TO_ROOT,SEQUENCE,IMMEDIATE_PARENT,CODE,CODE_TEXT +,1,,LP31755-9,Microbiology +LP31755-9,1,LP31755-9,LP14559-6,Microorganism +LP31755-9.LP14559-6,1,LP14559-6,LP98185-9,Bacteria +LP31755-9.LP14559-6.LP98185-9,1,LP98185-9,LP14082-9,Bacteria +LP31755-9.LP14559-6.LP98185-9.LP14082-9,1,LP14082-9,LP52258-8,Bacteria | Body Fluid +LP31755-9.LP14559-6.LP98185-9.LP14082-9.LP52258-8,1,LP52258-8,41599-2,Bacteria Fld Ql Micro +LP31755-9.LP14559-6.LP98185-9.LP14082-9,2,LP14082-9,LP52260-4,Bacteria | Cerebral spinal fluid +LP31755-9.LP14559-6.LP98185-9.LP14082-9.LP52260-4,1,LP52260-4,41602-4,Bacteria CSF Ql Micro +LP31755-9.LP14559-6.LP98185-9.LP14082-9,3,LP14082-9,LP52960-9,Bacteria | Cervix diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PanelsAndForms/AnswerList.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PanelsAndForms/AnswerList.csv new file mode 100644 index 00000000000..82330d220c1 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PanelsAndForms/AnswerList.csv @@ -0,0 +1,12 @@ +"AnswerListId","AnswerListName" ,"AnswerListOID" ,"ExtDefinedYN","ExtDefinedAnswerListCodeSystem","ExtDefinedAnswerListLink" ,"AnswerStringId","LocalAnswerCode","LocalAnswerCodeSystem","SequenceNumber","DisplayText" ,"ExtCodeId","ExtCodeDisplayName" ,"ExtCodeSystem" ,"ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" ,"SubsequentTextPrompt","Description","Score" +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13825-7" ,"1" , ,1 ,"v2.69 1 slice or 1 dinner roll" , , , , , , , , +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13838-0" ,"2" , ,2 ,"v2.69 2 slices or 2 dinner rolls" , , , , , , , , +"LL1000-0" ,"PhenX05_13_30D bread amt","1.3.6.1.4.1.12009.10.1.165" ,"N" , , ,"LA13892-7" ,"3" , ,3 ,"v2.69 More than 2 slices or 2 dinner rolls", , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA6270-8" ,"00" , ,1 ,"v2.69 Never" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13836-4" ,"01" , ,2 ,"v2.69 1-3 times per month" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13834-9" ,"02" , ,3 ,"v2.69 1-2 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13853-9" ,"03" , ,4 ,"v2.69 3-4 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13860-4" ,"04" , ,5 ,"v2.69 5-6 times per week" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA13827-3" ,"05" , ,6 ,"v2.69 1 time per day" , , , , , , , , +"LL1001-8" ,"PhenX05_14_30D freq amts","1.3.6.1.4.1.12009.10.1.166" ,"N" , , ,"LA4389-8" ,"97" , ,11 ,"v2.69 Refused" ,"443390004","Refused (qualifier value)","http://snomed.info/sct","http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College", , , +"LL1892-0" ,"ICD-9_ICD-10" ,"1.3.6.1.4.1.12009.10.1.1069","Y" , ,"http://www.cdc.gov/nchs/icd.htm", , , , , , , , , , , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PanelsAndForms/Loinc.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PanelsAndForms/Loinc.csv new file mode 100644 index 00000000000..051297e87a0 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PanelsAndForms/Loinc.csv @@ -0,0 +1,16 @@ +"LOINC_NUM","COMPONENT" ,"PROPERTY","TIME_ASPCT","SYSTEM" ,"SCALE_TYP","METHOD_TYP" ,"CLASS" ,"VersionLastChanged","CHNG_TYPE","DefinitionDescription" ,"STATUS","CONSUMER_NAME","CLASSTYPE","FORMULA","SPECIES","EXMPL_ANSWERS","SURVEY_QUEST_TEXT" ,"SURVEY_QUEST_SRC" ,"UNITSREQUIRED","SUBMITTED_UNITS","RELATEDNAMES2" ,"SHORTNAME" ,"ORDER_OBS" ,"CDISC_COMMON_TESTS","HL7_FIELD_SUBFIELD_ID","EXTERNAL_COPYRIGHT_NOTICE" ,"EXAMPLE_UNITS","LONG_COMMON_NAME" ,"UnitsAndRange","DOCUMENT_SECTION","EXAMPLE_UCUM_UNITS","EXAMPLE_SI_UCUM_UNITS","STATUS_REASON","STATUS_TEXT","CHANGE_REASON_PUBLIC" ,"COMMON_TEST_RANK","COMMON_ORDER_RANK","COMMON_SI_TEST_RANK","HL7_ATTACHMENT_STRUCTURE","EXTERNAL_COPYRIGHT_LINK","PanelType","AskAtOrderEntry","AssociatedObservations" ,"VersionFirstReleased","ValidHL7AttachmentRequest" +"10013-1" ,"R' wave amplitude.lead I" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-I; R wave Amp L-I; Random; Right; Voltage" ,"R' wave Amp L-I" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead I" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10014-9" ,"R' wave amplitude.lead II" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"2; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-II; R wave Amp L-II; Random; Right; Voltage" ,"R' wave Amp L-II" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead II" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10015-6" ,"R' wave amplitude.lead III" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"3; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-III; R wave Amp L-III; Random; Right; Voltage" ,"R' wave Amp L-III" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead III" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10016-4" ,"R' wave amplitude.lead V1" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V1; R wave Amp L-V1; Random; Right; Voltage" ,"R' wave Amp L-V1" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V1" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"1001-7" ,"DBG Ab" ,"Pr" ,"Pt" ,"Ser/Plas^donor" ,"Ord" , ,"BLDBK" ,"2.44" ,"MIN" , ,"ACTIVE", ,1 , , , , , , , ,"ABS; Aby; Antby; Anti; Antibodies; Antibody; Autoantibodies; Autoantibody; BLOOD BANK; Donna Bennett-Goodspeed; Donr; Ordinal; Pl; Plasma; Plsm; Point in time; QL; Qual; Qualitative; Random; Screen; SerP; SerPl; SerPl^donor; SerPlas; Serum; Serum or plasma; SR" ,"DBG Ab SerPl Donr Ql" ,"Observation", , , , ,"DBG Ab [Presence] in Serum or Plasma from donor" , , , , , , ,"The Property has been changed from ACnc to Pr (Presence) to reflect the new model for ordinal terms where results are based on presence or absence." ,0 ,0 ,0 , , , , , , , +"10017-2" ,"R' wave amplitude.lead V2" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V2; R wave Amp L-V2; Random; Right; Voltage" ,"R' wave Amp L-V2" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V2" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10018-0" ,"R' wave amplitude.lead V3" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V3; R wave Amp L-V3; Random; Right; Voltage" ,"R' wave Amp L-V3" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V3" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10019-8" ,"R' wave amplitude.lead V4" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V4; R wave Amp L-V4; Random; Right; Voltage" ,"R' wave Amp L-V4" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V4" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10020-6" ,"R' wave amplitude.lead V5" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V5; R wave Amp L-V5; Random; Right; Voltage" ,"R' wave Amp L-V5" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V5" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Find" ,"Pt" ,"^Patient" ,"Ord" ,"PhenX" ,"PHENX" ,"2.44" ,"MIN" , ,"TRIAL" , ,2 , , , ,"Each time you eat bread, toast or dinner rolls, how much do you usually eat?","PhenX.050201100100","N" , ,"Finding; Findings; How much bread in 30D; Last; Ordinal; Point in time; QL; Qual; Qualitative; Random; Screen" ,"How much bread in 30D PhenX", , , , , ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]", , , , , , , ,0 ,0 ,0 , , , , , , , +"10000-8" ,"R wave duration.lead AVR" ,"Time" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; Durat; ECG; EKG.MEASUREMENTS; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave dur L-AVR; R wave dur L-AVR; Random; Right" ,"R wave dur L-AVR" ,"Observation", , , ,"s" ,"R wave duration in lead AVR" , , ,"s" , , , , ,0 ,0 ,0 , , , , , , , +"17787-3" ,"Study report" ,"Find" ,"Pt" ,"Neck>Thyroid gland","Doc" ,"NM" ,"RAD" ,"2.61" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Document; Finding; Findings; Imaging; Point in time; Radiology; Random; Study report; Thy" ,"NM Thyroid Study report" ,"Both" , , , , ,"v2.69 NM Thyroid gland Study report" , , , , , , ,"Changed System from ""Thyroid"" for conformance with the LOINC/RadLex unified model.; Method of ""Radnuc"" was changed to ""NM"". The LOINC/RadLex Committee agreed to use a subset of the two-letter DICOM modality codes as the primary modality identifier." ,0 ,0 ,0 ,"IG exists" , , , ,"81220-6;72230-6" ,"1.0l" , +"17788-1" ,"Large unstained cells/100 leukocytes" ,"NFr" ,"Pt" ,"Bld" ,"Qn" ,"Automated count","HEM/BC" ,"2.50" ,"MIN" ,"Part of auto diff output of Bayer H*3S; peroxidase negative cells too large to be classified as lymph or basophil" ,"ACTIVE", ,1 , , , , , ,"Y" ,"%" ,"100WBC; Auto; Automated detection; Blood; Cell; Cellularity; Elec; Elect; Electr; HEMATOLOGY/CELL COUNTS; Leuc; Leuk; Leukocyte; Lkcs; LUC; Number Fraction; Percent; Point in time; QNT; Quan; Quant; Quantitative; Random; WB; WBC; WBCs; White blood cell; White blood cells; Whole blood" ,"LUC/leuk NFr Bld Auto" ,"Observation", , , ,"%" ,"Large unstained cells/100 leukocytes in Blood by Automated count" , , ,"%" , , , , ,1894 ,0 ,1894 , , , , , ,"1.0l" , +"11488-4" ,"Consultation note" ,"Find" ,"Pt" ,"{Setting}" ,"Doc" ,"{Role}" ,"DOC.ONTOLOGY","2.63" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Consult note; DOC.ONT; Document; Encounter; Evaluation and management; Evaluation and management note; Finding; Findings; notes; Point in time; Random; Visit note" ,"Consult note" ,"Both" , , , , ,"Consult note" , , , , , , ,"Edit made because this term is conformant to the Document Ontology axis values and therefore are being placed in this class.; Based on Clinical LOINC Committee decision during the September 2014 meeting, {Provider} was changed to {Author Type} to emphasize a greater breadth of potential document authors. At the September 2015 Clinical LOINC Committee meeting, the Committee decided to change {Author Type} to {Role} to align with the 'Role' axis name in the LOINC Document Ontology.; Because it is too difficult to maintain and because the distinction between documents and sections is not clear-cut nor necessary in most cases, the DOCUMENT_SECTION field has been deemed to have little value. The field has been set to null in the December 2017 release in preparation for removal in the December 2018 release. These changes were approved by the Clinical LOINC Committee.",0 ,0 ,0 ,"IG exists" , , , ,"81222-2;72231-4;81243-8","1.0j-a" ,"Y" +"47239-9" ,"Reason for stopping HIV Rx" ,"Type" ,"Pt" ,"^Patient" ,"Nom" ,"Reported" ,"ART" ,"2.50" ,"MIN" ,"Reason for stopping antiretroviral therapy" ,"ACTIVE", ,2 , , , , , ,"N" , ,"AIDS; Anti-retroviral therapy; ART; Human immunodeficiency virus; Nominal; Point in time; Random; Treatment; Typ" ,"Reason for stopping HIV Rx" ,"Observation", , ,"Copyright © 2006 World Health Organization. Used with permission. Publications of the World Health Organization can be obtained from WHO Press, World Health Organization, 20 Avenue Appia, 1211 Geneva 27, Switzerland (tel: +41 22 791 2476; fax: +41 22 791 4857; email: bookorders@who.int). Requests for permission to reproduce or translate WHO publications – whether for sale or for noncommercial distribution – should be addressed to WHO Press, at the above address (fax: +41 22 791 4806; email: permissions@who.int). The designations employed and the presentation of the material in this publication do not imply the expression of any opinion whatsoever on the part of the World Health Organization concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries. Dotted lines on maps represent approximate border lines for which there may not yet be full agreement. The mention of specific companies or of certain manufacturers’ products does not imply that they are endorsed or recommended by the World Health Organization in preference to others of a similar nature that are not mentioned. Errors and omissions excepted, the names of proprietary products are distinguished by initial capital letters. All reasonable precautions have been taken by WHO to verify the information contained in this publication. However, the published material is being distributed without warranty of any kind, either express or implied. The responsibility for the interpretation and use of the material lies with the reader. In no event shall the World Health Organization be liable for damages arising from its use.", ,"Reason for stopping HIV treatment" , , , , , , , ,0 ,0 ,0 , ,"WHO_HIV" , , , ,"2.22" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv new file mode 100644 index 00000000000..820602c77ad --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PanelsAndForms/LoincAnswerListLink.csv @@ -0,0 +1,11 @@ +"LoincNumber","LongCommonName" ,"AnswerListId","AnswerListName" ,"AnswerListLinkType","ApplicableContext" +"61438-8" ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]","LL1000-0" ,"PhenX05_13_30D bread amt","NORMATIVE" , +"10061-0" ,"S' wave amplitude in lead I" ,"LL1311-1" ,"PhenX12_44" ,"EXAMPLE" , +"10331-7" ,"Rh [Type] in Blood" ,"LL360-9" ,"Pos|Neg" ,"EXAMPLE" , +"10389-5" ,"Blood product.other [Type]" ,"LL2413-4" ,"Othr bld prod" ,"EXAMPLE" , +"10390-3" ,"Blood product special preparation [Type]" ,"LL2422-5" ,"Blood prod treatment" ,"EXAMPLE" , +"10393-7" ,"Factor IX given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10395-2" ,"Factor VIII given [Type]" ,"LL2420-9" ,"Human/Recomb" ,"EXAMPLE" , +"10401-8" ,"Immune serum globulin given [Type]" ,"LL2421-7" ,"IM/IV" ,"EXAMPLE" , +"10410-9" ,"Plasma given [Type]" ,"LL2417-5" ,"Plasma type" ,"EXAMPLE" , +"10568-4" ,"Clarity of Semen" ,"LL2427-4" ,"Clear/Opales/Milky" ,"EXAMPLE" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/LoincPartLink.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/LoincPartLink.csv new file mode 100644 index 00000000000..36c84f3fe95 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/LoincPartLink.csv @@ -0,0 +1,10 @@ +"LoincNumber","LongCommonName","PartNumber","PartName","PartCodeSystem","PartTypeName","LinkTypeName","Property" +"10013-1","R' wave amplitude in lead I","LP31101-6","R' wave amplitude.lead I","http://loinc.org","COMPONENT","Primary","http://loinc.org/property/COMPONENT" +"10013-1","R' wave amplitude in lead I","LP6802-5","Elpot","http://loinc.org","PROPERTY","Primary","http://loinc.org/property/PROPERTY" +"10013-1","R' wave amplitude in lead I","LP6960-1","Pt","http://loinc.org","TIME","Primary","http://loinc.org/property/TIME_ASPCT" +"10013-1","R' wave amplitude in lead I","LP7289-4","Heart","http://loinc.org","SYSTEM","Primary","http://loinc.org/property/SYSTEM" +"10013-1","R' wave amplitude in lead I","LP7753-9","Qn","http://loinc.org","SCALE","Primary","http://loinc.org/property/SCALE_TYP" +"10013-1","R' wave amplitude in lead I","LP6244-0","EKG","http://loinc.org","METHOD","Primary","http://loinc.org/property/METHOD_TYP" +"10013-1","R' wave amplitude in lead I","LP31101-6","R' wave amplitude.lead I","http://loinc.org","COMPONENT","DetailedModel","http://loinc.org/property/analyte" +"10013-1","R' wave amplitude in lead I","LP6802-5","Elpot","http://loinc.org","PROPERTY","DetailedModel","http://loinc.org/property/PROPERTY" +"10013-1","R' wave amplitude in lead I","LP6960-1","Pt","http://loinc.org","TIME","DetailedModel","http://loinc.org/property/time-core" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/LoincPartLink_Primary.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/LoincPartLink_Primary.csv new file mode 100644 index 00000000000..8dbe575ffd2 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/LoincPartLink_Primary.csv @@ -0,0 +1,7 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartName" ,"PartCodeSystem" ,"PartTypeName","LinkTypeName","Property" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"Primary" ,"http://loinc.org/property/COMPONENT" +"10013-1" ,"R' wave amplitude in lead I","LP6802-5" ,"Elpot" ,"http://loinc.org","PROPERTY" ,"Primary" ,"http://loinc.org/property/PROPERTY" +"10013-1" ,"R' wave amplitude in lead I","LP6960-1" ,"Pt" ,"http://loinc.org","TIME" ,"Primary" ,"http://loinc.org/property/TIME_ASPCT" +"10013-1" ,"R' wave amplitude in lead I","LP7289-4" ,"Heart" ,"http://loinc.org","SYSTEM" ,"Primary" ,"http://loinc.org/property/SYSTEM" +"10013-1" ,"R' wave amplitude in lead I","LP7753-9" ,"Qn" ,"http://loinc.org","SCALE" ,"Primary" ,"http://loinc.org/property/SCALE_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP6244-0" ,"EKG" ,"http://loinc.org","METHOD" ,"Primary" ,"http://loinc.org/property/METHOD_TYP" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv new file mode 100644 index 00000000000..869c2c1651d --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/LoincPartLink_Supplementary.csv @@ -0,0 +1,13 @@ +"LoincNumber","LongCommonName" ,"PartNumber","PartName" ,"PartCodeSystem" ,"PartTypeName","LinkTypeName" ,"Property" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"DetailedModel" ,"http://loinc.org/property/analyte" +"10013-1" ,"R' wave amplitude in lead I","LP6802-5" ,"Elpot" ,"http://loinc.org","PROPERTY" ,"DetailedModel" ,"http://loinc.org/property/PROPERTY" +"10013-1" ,"R' wave amplitude in lead I","LP6960-1" ,"Pt" ,"http://loinc.org","TIME" ,"DetailedModel" ,"http://loinc.org/property/time-core" +"10013-1" ,"R' wave amplitude in lead I","LP7289-4" ,"Heart" ,"http://loinc.org","SYSTEM" ,"DetailedModel" ,"http://loinc.org/property/system-core" +"10013-1" ,"R' wave amplitude in lead I","LP7753-9" ,"Qn" ,"http://loinc.org","SCALE" ,"DetailedModel" ,"http://loinc.org/property/SCALE_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP6244-0" ,"EKG" ,"http://loinc.org","METHOD" ,"DetailedModel" ,"http://loinc.org/property/METHOD_TYP" +"10013-1" ,"R' wave amplitude in lead I","LP31101-6" ,"R' wave amplitude.lead I","http://loinc.org","COMPONENT" ,"SyntaxEnhancement","http://loinc.org/property/analyte-core" +"10013-1" ,"R' wave amplitude in lead I","LP190563-9","Cardiology" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP29708-2" ,"Cardiology" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7787-7" ,"Clinical" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7795-0" ,"EKG measurements" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/category" +"10013-1" ,"R' wave amplitude in lead I","LP7795-0" ,"EKG.MEAS" ,"http://loinc.org","CLASS" ,"Metadata" ,"http://loinc.org/property/CLASS" diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/Part.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/Part.csv new file mode 100644 index 00000000000..d5816ead286 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/Part.csv @@ -0,0 +1,46 @@ +"PartNumber","PartTypeName","PartName","PartDisplayName","Status" +"LP101394-7","ADJUSTMENT","adjusted for maternal weight","adjusted for maternal weight","ACTIVE" +"LP101907-6","ADJUSTMENT","corrected for age","corrected for age","ACTIVE" +"LP115711-6","ADJUSTMENT","corrected for background","corrected for background","ACTIVE" +"LP147359-6","ADJUSTMENT","adjusted for body weight","adjusted for body weight","ACTIVE" +"LP173482-3","ADJUSTMENT","1st specimen","1st specimen","DEPRECATED" +"LP173483-1","ADJUSTMENT","post cyanocobalamin",,"ACTIVE" +"LP173484-9","ADJUSTMENT","W hyperextension)",,"ACTIVE" +"LP6244-0","METHOD","EKG","Electrocardiogram (EKG)","ACTIVE" +"LP18172-4","COMPONENT","Interferon.beta","Interferon beta","ACTIVE" +"LP7289-4","SYSTEM","Heart","Heart","ACTIVE" +"LP6960-1","TIME","Pt","Point in time (spot)","ACTIVE" +"LP6802-5","PROPERTY","Elpot","Electrical Potential (Voltage)","ACTIVE" +"LP7753-9","SCALE","Qn","Qn","ACTIVE" +"LP31101-6","COMPONENT","R' wave amplitude.lead I","R' wave amplitude.lead I","ACTIVE" +"LP31102-4","COMPONENT","R' wave amplitude.lead II","R' wave amplitude.lead II","ACTIVE" +"LP31103-2","COMPONENT","R' wave amplitude.lead III","R' wave amplitude.lead III","ACTIVE" +"LP31104-0","COMPONENT","R' wave amplitude.lead V1","R' wave amplitude.lead V1","ACTIVE" +"LP31105-7","COMPONENT","R' wave amplitude.lead V2","R' wave amplitude.lead V2","ACTIVE" +"LP31106-5","COMPONENT","R' wave amplitude.lead V3","R' wave amplitude.lead V3","ACTIVE" +"LP31107-3","COMPONENT","R' wave amplitude.lead V4","R' wave amplitude.lead V4","ACTIVE" +"LP31108-1","COMPONENT","R' wave amplitude.lead V5","R' wave amplitude.lead V5","ACTIVE" +"LP31109-9","COMPONENT","R' wave amplitude.lead V6","R' wave amplitude.lead V6","ACTIVE" +"LP31110-7","COMPONENT","R' wave duration.lead AVF","R' wave duration.lead AVF","ACTIVE" +"LP30269-2","SYSTEM","Ser/Plas^donor",,"ACTIVE" +"LP149220-8","PROPERTY","Pr","Presence","ACTIVE" +"LP7751-3","SCALE","Ord","Ord","ACTIVE" +"LP37904-7","COMPONENT","DBG Ab","DBG Ab","ACTIVE" +"LP6813-2","PROPERTY","Find","Finding","ACTIVE" +"LP95333-8","METHOD","PhenX","PhenX","ACTIVE" +"LP102627-9","COMPONENT","Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days","ACTIVE" +"LP6879-3","PROPERTY","Time","Time (e.g. seconds)","ACTIVE" +"LP31088-5","COMPONENT","R wave duration.lead AVR","R wave duration.lead AVR","ACTIVE" +"LP206647-2","SYSTEM","Neck>Thyroid gland","Thyroid gland","ACTIVE" +"LP208655-3","METHOD","NM","NM","ACTIVE" +"LP32888-7","SCALE","Doc","Doc","ACTIVE" +"LP31534-8","COMPONENT","Study report","Study report","ACTIVE" +"LP7057-5","SYSTEM","Bld","Blood","ACTIVE" +"LP6838-9","PROPERTY","NFr","Number Fraction","ACTIVE" +"LP6141-8","METHOD","Automated count","Automated count","ACTIVE" +"LP15842-5","COMPONENT","Pyridoxine","Pyridoxine","ACTIVE" +"LP19258-0","COMPONENT","Large unstained cells","Large unstained cells","ACTIVE" +"LP32887-9","SYSTEM","{Setting}","{Setting}","ACTIVE" +"LP187178-1","METHOD","{Role}","Role-unspecified","ACTIVE" +"LP72311-1","COMPONENT","Consultation note","Consultation note","ACTIVE" + diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv new file mode 100644 index 00000000000..495416894ce --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/PartFile/PartRelatedCodeMapping.csv @@ -0,0 +1,12 @@ +"PartNumber","PartName" ,"PartTypeName","ExtCodeId" ,"ExtCodeDisplayName" ,"ExtCodeSystem" ,"Equivalence","ContentOrigin","ExtCodeSystemVersion" ,"ExtCodeSystemCopyrightNotice" +"LP18172-4" ,"Interferon.beta" ,"COMPONENT" ," 420710006","Interferon beta (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP31706-2" ,"Nornicotine" ,"COMPONENT" ,"1018001" ,"Nornicotine (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15826-8" ,"Prostaglandin F2","COMPONENT" ,"10192006" ,"Prostaglandin PGF2 (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP7400-7" ,"Liver" ,"SYSTEM" ,"10200004" ,"Liver structure (body structure)","http://snomed.info/sct" ,"wider" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP29165-5" ,"Liver.FNA" ,"SYSTEM" ,"10200004" ,"Liver structure (body structure)","http://snomed.info/sct" ,"narrower" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15666-8" ,"Inosine" ,"COMPONENT" ,"102640000" ,"Inosine (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15943-1" ,"Uronate" ,"COMPONENT" ,"102641001" ,"Uronic acid (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15791-4" ,"Phenylketones" ,"COMPONENT" ,"102642008" ,"Phenylketones (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15721-1" ,"Malonate" ,"COMPONENT" ,"102648007" ,"Malonic acid (substance)" ,"http://snomed.info/sct" ,"equivalent" ,"Both" ,"http://snomed.info/sct/900000000000207008/version/20170731","This material includes SNOMED Clinical Terms® (SNOMED CT®) which is used by permission of the International Health Terminology Standards Development Organisation (IHTSDO) under license. All rights reserved. SNOMED CT® was originally created by The College of American Pathologists. “SNOMED” and “SNOMED CT” are registered trademarks of the IHTSDO.This material includes content from the US Edition to SNOMED CT, which is developed and maintained by the U.S. National Library of Medicine and is available to authorized UMLS Metathesaurus Licensees from the UTS Downloads site at https://uts.nlm.nih.gov.Use of SNOMED CT content is subject to the terms and conditions set forth in the SNOMED CT Affiliate License Agreement. It is the responsibility of those implementing this product to ensure they are appropriately licensed and for more information on the license, including how to register as an Affiliate Licensee, please refer to http://www.snomed.org/snomed-ct/get-snomed-ct or info@snomed.org<mailto:info@snomed.org>. This may incur a fee in SNOMED International non-Member countries." +"LP15842-5" ,"Pyridoxine" ,"COMPONENT" ,"1054" ,"Pyridoxine" ,"http://pubchem.ncbi.nlm.nih.gov","equivalent" , , , +"LP15842-5" ,"Pyridoxine" ,"COMPONENT" ,"1054" ,"Pyridoxine" ,"http://foo/bar" ,"equivalent" , , , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv new file mode 100644 index 00000000000..1e9b3872892 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/Top2000Results/SI/Top2000CommonLabResultsSi.csv @@ -0,0 +1,10 @@ +LOINC #,Long Common Name,Short Name,CLASS,Rank +14682-9,Creatinine [Moles/volume] in Serum or Plasma,Creat SerPl-mCnc,Chem,1 +718-7,Hemoglobin [Mass/volume] in Blood,Hgb Bld-mCnc,HEM/BC,2 +2823-3,Potassium [Moles/volume] in Serum or Plasma,Potassium SerPl-sCnc,Chem,3 +14749-6,Glucose [Moles/volume] in Serum or Plasma,Glucose SerPl-mCnc,Chem,4 +2951-2,Sodium [Moles/volume] in Serum or Plasma,Sodium SerPl-sCnc,Chem,5 +3094-0,Urea nitrogen [Mass/volume] in Serum or Plasma,BUN SerPl-mCnc,Chem,6 +2028-9,"Carbon dioxide, total [Moles/volume] in Serum or Plasma",CO2 SerPl-sCnc,Chem,7 +2075-0,Chloride [Moles/volume] in Serum or Plasma,Chloride SerPl-sCnc,Chem,8 +789-8,Erythrocytes [#/volume] in Blood by Automated count,RBC # Bld Auto,HEM/BC,9 diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv new file mode 100644 index 00000000000..c80db052dd3 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/AccessoryFiles/Top2000Results/US/Top2000CommonLabResultsUs.csv @@ -0,0 +1,10 @@ +LOINC #,Long Common Name,Short Name,CLASS,Rank +2160-0,Creatinine [Mass/volume] in Serum or Plasma,Creat SerPl-mCnc,Chem,1 +718-7,Hemoglobin [Mass/volume] in Blood,Hgb Bld-mCnc,HEM/BC,2 +2823-3,Potassium [Moles/volume] in Serum or Plasma,Potassium SerPl-sCnc,Chem,3 +2345-7,Glucose [Mass/volume] in Serum or Plasma,Glucose SerPl-mCnc,Chem,4 +2951-2,Sodium [Moles/volume] in Serum or Plasma,Sodium SerPl-sCnc,Chem,5 +3094-0,Urea nitrogen [Mass/volume] in Serum or Plasma,BUN SerPl-mCnc,Chem,6 +2028-9,"Carbon dioxide, total [Moles/volume] in Serum or Plasma",CO2 SerPl-sCnc,Chem,7 +2075-0,Chloride [Moles/volume] in Serum or Plasma,Chloride SerPl-sCnc,Chem,8 +789-8,Erythrocytes [#/volume] in Blood by Automated count,RBC # Bld Auto,HEM/BC,9 diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/LoincTable/Loinc.csv b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/LoincTable/Loinc.csv new file mode 100644 index 00000000000..44a9062f695 --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/LoincTable/Loinc.csv @@ -0,0 +1,16 @@ +"LOINC_NUM","COMPONENT" ,"PROPERTY","TIME_ASPCT","SYSTEM" ,"SCALE_TYP","METHOD_TYP" ,"CLASS" ,"VersionLastChanged","CHNG_TYPE","DefinitionDescription" ,"STATUS","CONSUMER_NAME","CLASSTYPE","FORMULA","SPECIES","EXMPL_ANSWERS","SURVEY_QUEST_TEXT" ,"SURVEY_QUEST_SRC" ,"UNITSREQUIRED","SUBMITTED_UNITS","RELATEDNAMES2" ,"SHORTNAME" ,"ORDER_OBS" ,"CDISC_COMMON_TESTS","HL7_FIELD_SUBFIELD_ID","EXTERNAL_COPYRIGHT_NOTICE" ,"EXAMPLE_UNITS","LONG_COMMON_NAME" ,"UnitsAndRange","DOCUMENT_SECTION","EXAMPLE_UCUM_UNITS","EXAMPLE_SI_UCUM_UNITS","STATUS_REASON","STATUS_TEXT","CHANGE_REASON_PUBLIC" ,"COMMON_TEST_RANK","COMMON_ORDER_RANK","COMMON_SI_TEST_RANK","HL7_ATTACHMENT_STRUCTURE","EXTERNAL_COPYRIGHT_LINK","PanelType","AskAtOrderEntry","AssociatedObservations" ,"VersionFirstReleased","ValidHL7AttachmentRequest" +"10013-1" ,"v2.69 R' wave amplitude.lead I" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-I; R wave Amp L-I; Random; Right; Voltage" ,"R' wave Amp L-I" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead I" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10014-9" ,"v2.69 R' wave amplitude.lead II" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"2; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-II; R wave Amp L-II; Random; Right; Voltage" ,"R' wave Amp L-II" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead II" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10015-6" ,"v2.69 R' wave amplitude.lead III" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"3; Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-III; R wave Amp L-III; Random; Right; Voltage" ,"R' wave Amp L-III" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead III" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10016-4" ,"v2.69 R' wave amplitude.lead V1" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V1; R wave Amp L-V1; Random; Right; Voltage" ,"R' wave Amp L-V1" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V1" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"1001-7" ,"v2.69 DBG Ab" ,"Pr" ,"Pt" ,"Ser/Plas^donor" ,"Ord" , ,"BLDBK" ,"2.44" ,"MIN" , ,"ACTIVE", ,1 , , , , , , , ,"ABS; Aby; Antby; Anti; Antibodies; Antibody; Autoantibodies; Autoantibody; BLOOD BANK; Donna Bennett-Goodspeed; Donr; Ordinal; Pl; Plasma; Plsm; Point in time; QL; Qual; Qualitative; Random; Screen; SerP; SerPl; SerPl^donor; SerPlas; Serum; Serum or plasma; SR" ,"DBG Ab SerPl Donr Ql" ,"Observation", , , , ,"DBG Ab [Presence] in Serum or Plasma from donor" , , , , , , ,"The Property has been changed from ACnc to Pr (Presence) to reflect the new model for ordinal terms where results are based on presence or absence." ,0 ,0 ,0 , , , , , , , +"10017-2" ,"v2.69 R' wave amplitude.lead V2" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V2; R wave Amp L-V2; Random; Right; Voltage" ,"R' wave Amp L-V2" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V2" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10018-0" ,"v2.69 R' wave amplitude.lead V3" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V3; R wave Amp L-V3; Random; Right; Voltage" ,"R' wave Amp L-V3" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V3" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10019-8" ,"v2.69 R' wave amplitude.lead V4" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V4; R wave Amp L-V4; Random; Right; Voltage" ,"R' wave Amp L-V4" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V4" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"10020-6" ,"v2.69 R' wave amplitude.lead V5" ,"Elpot" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; ECG; EKG.MEASUREMENTS; Electrical potential; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave Amp L-V5; R wave Amp L-V5; Random; Right; Voltage" ,"R' wave Amp L-V5" ,"Observation", , , ,"mV" ,"R' wave amplitude in lead V5" , , ,"mV" , , , , ,0 ,0 ,0 , , , , , , , +"61438-8" ,"v2.69 Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30D","Find" ,"Pt" ,"^Patient" ,"Ord" ,"PhenX" ,"PHENX" ,"2.44" ,"MIN" , ,"TRIAL" , ,2 , , , ,"Each time you eat bread, toast or dinner rolls, how much do you usually eat?","PhenX.050201100100","N" , ,"Finding; Findings; How much bread in 30D; Last; Ordinal; Point in time; QL; Qual; Qualitative; Random; Screen" ,"How much bread in 30D PhenX", , , , , ,"Each time you ate bread, toast or dinner rolls, how much did you usually eat in the past 30 days [PhenX]", , , , , , , ,0 ,0 ,0 , , , , , , , +"10000-8" ,"v2.69 R wave duration.lead AVR" ,"Time" ,"Pt" ,"Heart" ,"Qn" ,"EKG" ,"EKG.MEAS" ,"2.48" ,"MIN" , ,"ACTIVE", ,2 , , , , , ,"Y" , ,"Cardiac; Durat; ECG; EKG.MEASUREMENTS; Electrocardiogram; Electrocardiograph; Hrt; Painter's colic; PB; Plumbism; Point in time; QNT; Quan; Quant; Quantitative; R prime; R' wave dur L-AVR; R wave dur L-AVR; Random; Right" ,"R wave dur L-AVR" ,"Observation", , , ,"s" ,"R wave duration in lead AVR" , , ,"s" , , , , ,0 ,0 ,0 , , , , , , , +"17787-3" ,"v2.69 Study report" ,"Find" ,"Pt" ,"Neck>Thyroid gland","Doc" ,"NM" ,"RAD" ,"2.61" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Document; Finding; Findings; Imaging; Point in time; Radiology; Random; Study report; Thy" ,"NM Thyroid Study report" ,"Both" , , , , ,"v2.69 NM Thyroid gland Study report" , , , , , , ,"Changed System from ""Thyroid"" for conformance with the LOINC/RadLex unified model.; Method of ""Radnuc"" was changed to ""NM"". The LOINC/RadLex Committee agreed to use a subset of the two-letter DICOM modality codes as the primary modality identifier." ,0 ,0 ,0 ,"IG exists" , , , ,"81220-6;72230-6" ,"1.0l" , +"17788-1" ,"v2.69 Large unstained cells/100 leukocytes" ,"NFr" ,"Pt" ,"Bld" ,"Qn" ,"Automated count","HEM/BC" ,"2.50" ,"MIN" ,"Part of auto diff output of Bayer H*3S; peroxidase negative cells too large to be classified as lymph or basophil" ,"ACTIVE", ,1 , , , , , ,"Y" ,"%" ,"100WBC; Auto; Automated detection; Blood; Cell; Cellularity; Elec; Elect; Electr; HEMATOLOGY/CELL COUNTS; Leuc; Leuk; Leukocyte; Lkcs; LUC; Number Fraction; Percent; Point in time; QNT; Quan; Quant; Quantitative; Random; WB; WBC; WBCs; White blood cell; White blood cells; Whole blood" ,"LUC/leuk NFr Bld Auto" ,"Observation", , , ,"%" ,"Large unstained cells/100 leukocytes in Blood by Automated count" , , ,"%" , , , , ,1894 ,0 ,1894 , , , , , ,"1.0l" , +"11488-4" ,"v2.69 Consultation note" ,"Find" ,"Pt" ,"{Setting}" ,"Doc" ,"{Role}" ,"DOC.ONTOLOGY","2.63" ,"MIN" , ,"ACTIVE", ,2 , , , , , , , ,"Consult note; DOC.ONT; Document; Encounter; Evaluation and management; Evaluation and management note; Finding; Findings; notes; Point in time; Random; Visit note" ,"Consult note" ,"Both" , , , , ,"Consult note" , , , , , , ,"Edit made because this term is conformant to the Document Ontology axis values and therefore are being placed in this class.; Based on Clinical LOINC Committee decision during the September 2014 meeting, {Provider} was changed to {Author Type} to emphasize a greater breadth of potential document authors. At the September 2015 Clinical LOINC Committee meeting, the Committee decided to change {Author Type} to {Role} to align with the 'Role' axis name in the LOINC Document Ontology.; Because it is too difficult to maintain and because the distinction between documents and sections is not clear-cut nor necessary in most cases, the DOCUMENT_SECTION field has been deemed to have little value. The field has been set to null in the December 2017 release in preparation for removal in the December 2018 release. These changes were approved by the Clinical LOINC Committee.",0 ,0 ,0 ,"IG exists" , , , ,"81222-2;72231-4;81243-8","1.0j-a" ,"Y" +"47239-9" ,"v2.69 Reason for stopping HIV Rx" ,"Type" ,"Pt" ,"^Patient" ,"Nom" ,"Reported" ,"ART" ,"2.50" ,"MIN" ,"Reason for stopping antiretroviral therapy" ,"ACTIVE", ,2 , , , , , ,"N" , ,"AIDS; Anti-retroviral therapy; ART; Human immunodeficiency virus; Nominal; Point in time; Random; Treatment; Typ" ,"Reason for stopping HIV Rx" ,"Observation", , ,"Copyright © 2006 World Health Organization. Used with permission. Publications of the World Health Organization can be obtained from WHO Press, World Health Organization, 20 Avenue Appia, 1211 Geneva 27, Switzerland (tel: +41 22 791 2476; fax: +41 22 791 4857; email: bookorders@who.int). Requests for permission to reproduce or translate WHO publications – whether for sale or for noncommercial distribution – should be addressed to WHO Press, at the above address (fax: +41 22 791 4806; email: permissions@who.int). The designations employed and the presentation of the material in this publication do not imply the expression of any opinion whatsoever on the part of the World Health Organization concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries. Dotted lines on maps represent approximate border lines for which there may not yet be full agreement. The mention of specific companies or of certain manufacturers’ products does not imply that they are endorsed or recommended by the World Health Organization in preference to others of a similar nature that are not mentioned. Errors and omissions excepted, the names of proprietary products are distinguished by initial capital letters. All reasonable precautions have been taken by WHO to verify the information contained in this publication. However, the published material is being distributed without warranty of any kind, either express or implied. The responsibility for the interpretation and use of the material lies with the reader. In no event shall the World Health Organization be liable for damages arising from its use.", ,"Reason for stopping HIV treatment" , , , , , , , ,0 ,0 ,0 , ,"WHO_HIV" , , , ,"2.22" , diff --git a/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/loinc.xml b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/loinc.xml new file mode 100644 index 00000000000..15f65f5766e --- /dev/null +++ b/hapi-fhir-jpaserver-base/src/test/resources/loinc-ver/v269/loinc.xml @@ -0,0 +1,543 @@ +<!-- +LOINC is a freely available international standard for tests, measurements, and observations. It is a well maintained, version independent code system. + +Use of LOINC is governed by the LOINC License: https://loinc.org/license/ + +This CodeSystem resource describes 'LOINC' independent of any particular version. There are notes about changes for version specific LOINC code system resources. + +Note that the following set of codes are defined by the LOINC code systems: + - the main LOINC codes + - the LOINC Answer codes (LA) and the LOINC Answer list codes (LL) + - the LOINC Part codes (LP) in the Multiaxial Hierarchy + - the LOINC Part codes (LP) for the properties + Note: there are license restrictions on the use of LOINC Part codes + - the LOINC Group codes (LG) + Note: presently the LOINC Group codes are used to identify these roll-up groups as ValueSets, but are not yet loaded as codes in the CodeSystem + +Servers may generate variants of this for the LOINC version(s) and features they support. + +--> + +<CodeSystem xmlns="http://hl7.org/fhir"> + <id value="loinc"/> + + <!-- + This url is unchanged for all versions of LOINC. There can only be one correct Code System resource for each value of the version attribute (at least, only one per server). + --> + <url value="http://loinc.org"/> + + <!-- the HL7 v3 OID assigned to LOINC --> + <identifier> + <system value="urn:ietf:rfc:3986"/> + <value value="urn:oid:2.16.840.1.113883.6.1"/> + </identifier> + +<!-- <version value="2.69"/>--> + + <!-- + If a specific version is specified, the name should carry this information (e.g. LOINC_270). + --> + <name value="LOINC"/> + <title value="LOINC Code System (Testing Copy)"/> + <status value="active"/> + <experimental value="false"/> + + <publisher value="Regenstrief Institute, Inc."/> + <contact> + <telecom> + <system value="url" /> + <value value="http://loinc.org"/> + </telecom> + </contact> + + <!-- + <date value=2021-06/> + --> + <description value="LOINC is a freely available international standard for tests, measurements, and observations"/> + <copyright value="This material contains content from LOINC (http://loinc.org). LOINC is copyright ©1995-2021, Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee and is available at no cost under the license at http://loinc.org/license. LOINC® is a registered United States trademark of Regenstrief Institute, Inc."/> + <caseSensitive value="false"/> + + <valueSet value="http://loinc.org/vs"/> + + <!-- + It's at the discretion of servers whether to present fragments of LOINC hierarchically or not, when using the code system resource. But, if they are hierarchical, the Hierarchy SHALL be based on the is-a relationship that is derived from the LOINC Multiaxial Hierarchy. + --> + <hierarchyMeaning value="is-a"/> + <compositional value="false"/> <!-- no compositional grammar in LOINC --> + <versionNeeded value="false"/> + + <!-- + This canonical definition of LOINC does not include the LOINC content, which is distributed separately for portability. + + Servers may choose to include fragments of LOINC for illustration purposes. + --> + <content value="not-present"/> + + <!-- + <count value="65000"/> + If working with a specific version, you could nominate a count of the total number of concepts (including the answers, Hierarchy, etc.). In this canonical definition we do not. + --> + + <!-- + FILTERS + Generally defined filters for specifying value sets + In LOINC, all the properties can also be used as filters, but they are not defined explicitly as filters. + Parent/child properties are as defined by FHIR. Note that at this time the LOINC code system resource does not support ancestor/descendant relationships. + + For illustration purposes, consider this slice of the LOINC Multiaxial Hierarchy when reading the descriptions below: + + Laboratory [LP29693-6] + Microbiology and Antimicrobial susceptibility [LP343406-7] + Microbiology [LP7819-8] + Microorganism [LP14559-6] + Virus [LP14855-8] + Zika virus [LP200137-0] + Zika virus RNA | XXX [LP203271-4] + Zika virus RNA | XXX | Microbiology [LP379670-5] + Zika virus RNA [Presence] in Unspecified specimen by Probe and target amplification method [79190-5] + + Language Note: The filters defined here are specified using the default LOINC language - English (US). Requests are meant to be specified and interpreted on the English version. The return can be in a specified language (if supported by the server). But note that not all filters/properties have language translations available. + --> + <filter> + <code value="parent"/> + <description value="Allows for the selection of a set of codes based on their appearance in the LOINC Multiaxial Hierarchy. Parent selects immediate parent only. For example, the code '79190-5' has the parent 'LP379670-5'"/> + <operator value="="/> + <value value="A Part code"/> + </filter> + <filter> + <code value="child"/> + <description value="Allows for the selection of a set of codes based on their appearance in the LOINC Multiaxial Hierarchy. Child selects immediate children only. For example, the code 'LP379670-5' has the child '79190-5'. Only LOINC Parts have children; LOINC codes do not have any children because they are leaf nodes."/> + <operator value="="/> + <value value="A comma separated list of Part or LOINC codes"/> + </filter> + <filter> + <code value="copyright"/> + <description value="Allows for the inclusion or exclusion of LOINC codes that include 3rd party copyright notices. LOINC = only codes with a sole copyright by Regenstrief. 3rdParty = only codes with a 3rd party copyright in addition to the one from Regenstrief"/> + <operator value="="/> + <value value="LOINC | 3rdParty"/> + </filter> + + <!-- + PROPERTIES + There are 4 kinds of properties that apply to all LOINC codes: + 1. FHIR: display, designation; these are not described here since they are inherent in the specification + 2. Infrastructural: defined by FHIR, but documented here for the LOINC Multiaxial Hierarchy + 3. Primary LOINC properties: defined by the main LOINC table + 4. Secondary LOINC properties: defined by the LoincPartLink table + Additionally, there are 2 kinds of properties specific to Document ontology and Radiology codes, respectively: + 1. LOINC/RSNA Radiology Playbook properties + 2. Document Ontology properties + --> + <!-- + Infrastructural properties - inherited from FHIR, but documented here for the LOINC Multiaxial Hierarchy. + --> + + <property> + <code value="parent"/> + <uri value="http://hl7.org/fhir/concept-properties#parent"/> + <description value="A parent code in the Multiaxial Hierarchy"/> + <type value="code"/> + </property> + <property> + <code value="child"/> + <uri value="http://hl7.org/fhir/concept-properties#child"/> + <description value="A child code in the Multiaxial Hierarchy"/> + <type value="code"/> + </property> + + <!-- + Primary LOINC properties. + These apply to the main LOINC codes, but not the Multiaxial Hierarchy, Answer lists, or the Part codes. + Notes: + In the LOINC code system resource, the display element = LONG_COMMON_NAME + Many properties are specified as type "Coding", which allows use of LOINC Part codes (LP-) and the display text. LOINC Parts and their associations to LOINC terms are published in the LOINC Part File. + The properties defined here follow the guidance of the LOINC Users' Guide, which states that they should be expressed with the LOINC attributes contained in the LOINC Table. Properties that are not defined in the LOINC Table use FHIR-styled names. + --> + + <property> + <code value="STATUS"/> + <uri value="http://loinc.org/property/STATUS"/> + <description value="Status of the term. Within LOINC, codes with STATUS=DEPRECATED are considered inactive. Current values: ACTIVE, TRIAL, DISCOURAGED, and DEPRECATED"/> + <type value="string"/> + </property> + <property> + <code value="COMPONENT"/> + <uri value="http://loinc.org/property/COMPONENT"/> + <description value="First major axis-component or analyte: Analyte Name, Analyte sub-class, Challenge"/> + <type value="Coding"/> + </property> + <property> + <code value="PROPERTY"/> + <uri value="http://loinc.org/property/PROPERTY"/> + <description value="Second major axis-property observed: Kind of Property (also called kind of quantity)"/> + <type value="Coding"/> + </property> + <property> + <code value="TIME_ASPCT"/> + <uri value="http://loinc.org/property/TIME_ASPCT"/> + <description value="Third major axis-timing of the measurement: Time Aspect (Point or moment in time vs. time interval)"/> + <type value="Coding"/> + </property> + <property> + <code value="SYSTEM"/> + <uri value="http://loinc.org/property/SYSTEM"/> + <description value="Fourth major axis-type of specimen or system: System (Sample) Type"/> + <type value="Coding"/> + </property> + <property> + <code value="SCALE_TYP"/> + <uri value="http://loinc.org/property/SCALE_TYP"/> + <description value="Fifth major axis-scale of measurement: Type of Scale"/> + <type value="Coding"/> + </property> + <property> + <code value="METHOD_TYP"/> + <uri value="http://loinc.org/property/METHOD_TYP"/> + <description value="Sixth major axis-method of measurement: Type of Method"/> + <type value="Coding"/> + </property> + <property> + <code value="CLASS"/> + <uri value="http://loinc.org/property/CLASS"/> + <description value="An arbitrary classification of terms for grouping related observations together"/> + <type value="Coding"/> + </property> + <property> + <code value="VersionLastChanged"/> + <uri value="http://loinc.org/property/VersionLastChanged"/> + <description value="The LOINC version number in which the record has last changed. For new records, this field contains the same value as the VersionFirstReleased property."/> + <type value="string"/> + </property> + <property> + <code value="CLASSTYPE"/> + <uri value="http://loinc.org/property/CLASSTYPE"/> + <description value="1=Laboratory class; 2=Clinical class; 3=Claims attachments; 4=Surveys"/> + <type value="string"/> + </property> + <property> + <code value="ORDER_OBS"/> + <uri value="http://loinc.org/property/ORDER_OBS"/> + <description value="Provides users with an idea of the intended use of the term by categorizing it as an order only, observation only, or both"/> + <type value="string"/> + </property> + <property> + <code value="HL7_ATTACHMENT_STRUCTURE"/> + <uri value="http://loinc.org/property/HL7_ATTACHMENT_STRUCTURE"/> + <description value="This property is populated in collaboration with the HL7 Payer-Provider Exchange (PIE) Work Group (previously called Attachments Work Group) as described in the HL7 Attachment Specification: Supplement to Consolidated CDA Templated Guide."/> + <type value="string"/> + </property> + <property> + <code value="VersionFirstReleased"/> + <uri value="http://loinc.org/property/VersionFirstReleased"/> + <description value="This is the LOINC version number in which this LOINC term was first published."/> + <type value="string"/> + </property> + <property> + <code value="PanelType"/> + <uri value="http://loinc.org/property/PanelType"/> + <description value="For LOINC terms that are panels, this attribute classifies them as a 'Convenience group', 'Organizer', or 'Panel'"/> + <type value="string"/> + </property> + <property> + <code value="ValidHL7AttachmentRequest"/> + <uri value="http://loinc.org/property/ValidHL7AttachmentRequest"/> + <description value="A value of Y in this field indicates that this LOINC code can be sent by a payer as part of an HL7 Attachment request for additional information."/> + <type value="string"/> + </property> + <property> + <code value="DisplayName"/> + <uri value="http://loinc.org/property/DisplayName"/> + <description value="A name that is more 'clinician-friendly' compared to the current LOINC Short Name, Long Common Name, and Fully Specified Name. It is created algorithmically from the manually crafted display text for each Part and is generally more concise than the Long Common Name."/> + <type value="string"/> + </property> + <property> + <code value="answer-list"/> + <uri value="http://loinc.org/property/answer-list"/> + <description value="An answer list associated with this LOINC code (if there are matching answer lists defined)."/> + <type value="Coding"/> + </property> + + <!-- + Secondary LOINC properties. + These properties also apply to the main LOINC codes, but not the Multiaxial Hierarchy, Answer lists, or the Part codes. + Notes: + These properties are defined in the LoincPartLink table. + --> + + <property> + <code value="analyte"/> + <uri value="http://loinc.org/property/analyte"/> + <description value="First sub-part of the Component, i.e., the part of the Component before the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-core"/> + <uri value="http://loinc.org/property/analyte-core"/> + <description value="The primary part of the analyte without the suffix"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-suffix"/> + <uri value="http://loinc.org/property/analyte-suffix"/> + <description value="The suffix part of the analyte, if present, e.g., Ab or DNA"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-numerator"/> + <uri value="http://loinc.org/property/analyte-numerator"/> + <description value="The numerator part of the analyte, i.e., everything before the slash in analytes that contain a divisor"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-divisor"/> + <uri value="http://loinc.org/property/analyte-divisor"/> + <description value="The divisor part of the analyte, if present, i.e., after the slash and before the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-divisor-suffix"/> + <uri value="http://loinc.org/property/analyte-divisor-suffix"/> + <description value="The suffix part of the divisor, if present"/> + <type value="Coding"/> + </property> + <property> + <code value="challenge"/> + <uri value="http://loinc.org/property/challenge"/> + <description value="Second sub-part of the Component, i.e., after the first carat"/> + <type value="Coding"/> + </property> + <property> + <code value="adjustment"/> + <uri value="http://loinc.org/property/adjustment"/> + <description value="Third sub-part of the Component, i.e., after the second carat"/> + <type value="Coding"/> + </property> + <property> + <code value="count"/> + <uri value="http://loinc.org/property/count"/> + <description value="Fourth sub-part of the Component, i.e., after the third carat"/> + <type value="Coding"/> + </property> + <property> + <code value="time-core"/> + <uri value="http://loinc.org/property/time-core"/> + <description value="The primary part of the Time"/> + <type value="Coding"/> + </property> + <property> + <code value="time-modifier"/> + <uri value="http://loinc.org/property/time-modifier"/> + <description value="The modifier of the Time value, such as mean or max"/> + <type value="Coding"/> + </property> + <property> + <code value="system-core"/> + <uri value="http://loinc.org/property/system-core"/> + <description value="The primary part of the System, i.e., without the super system"/> + <type value="Coding"/> + </property> + <property> + <code value="super-system"/> + <uri value="http://loinc.org/property/super-system"/> + <description value="The super system part of the System, if present. The super system represents the source of the specimen when the source is someone or something other than the patient whose chart the result will be stored in. For example, fetus is the super system for measurements done on obstetric ultrasounds, because the fetus is being measured and that measurement is being recorded in the patient's (mother's) chart."/> + <type value="Coding"/> + </property> + <property> + <code value="analyte-gene"/> + <uri value="http://loinc.org/property/analyte-gene"/> + <description value="The specific gene represented in the analyte"/> + <type value="Coding"/> + </property> + <property> + <code value="category"/> + <uri value="http://loinc.org/property/category"/> + <description value="A single LOINC term can be assigned one or more categories based on both programmatic and manual tagging. Category properties also utilize LOINC Class Parts."/> + <type value="Coding"/> + </property> + <property> + <code value="search"/> + <uri value="http://loinc.org/property/search"/> + <description value="Synonyms, fragments, and other Parts that are linked to a term to enable more encompassing search results."/> + <type value="Coding"/> + </property> + + <!-- + LOINC/RSNA Radiology Playbook properties. These apply only to terms in the LOINC/RSNA Radiology Playbook File. + Notes: + Properties are specified as type "Coding", which are represented by LOINC Part codes (LP-) and their display names. + The attribute names here use FHIR styled names rather than their original LOINC style names because the original names contain periods. + --> + + <property> + <code value="rad-modality-modality-type"/> + <uri value="http://loinc.org/property/rad-modality-modality-type"/> + <description value="Modality is used to represent the device used to acquire imaging information."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-modality-modality-subtype"/> + <uri value="http://loinc.org/property/rad-modality-modality-subtype"/> + <description value="Modality subtype may be optionally included to signify a particularly common or evocative configuration of the modality."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-region-imaged"/> + <uri value="http://loinc.org/property/rad-anatomic-location-region-imaged"/> + <description value="The Anatomic Location Region Imaged attribute is used in two ways: as a coarse-grained descriptor of the area imaged and a grouper for finding related imaging exams; or, it is used just as a grouper."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-imaging-focus"/> + <uri value="http://loinc.org/property/rad-anatomic-location-imaging-focus"/> + <description value="The Anatomic Location Imaging Focus is a more fine-grained descriptor of the specific target structure of an imaging exam. In many areas, the focus should be a specific organ."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-laterality-presence"/> + <uri value="http://loinc.org/property/rad-anatomic-location-laterality-presence"/> + <description value="Radiology Exams that require laterality to be specified in order to be performed are signified with an Anatomic Location Laterality Presence attribute set to 'True'"/> + <type value="Coding"/> + </property> + <property> + <code value="rad-anatomic-location-laterality"/> + <uri value="http://loinc.org/property/rad-anatomic-location-laterality"/> + <description value="Radiology exam Laterality is specified as one of: Left, Right, Bilateral, Unilateral, Unspecified"/> + <type value="Coding"/> + </property> + <property> + <code value="rad-view-aggregation"/> + <uri value="http://loinc.org/property/rad-view-aggregation"/> + <description value="Aggregation describes the extent of the imaging performed, whether in quantitative terms (e.g., '3 or more views') or subjective terms (e.g., 'complete')."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-view-view-type"/> + <uri value="http://loinc.org/property/rad-view-view-type"/> + <description value="View type names specific views, such as 'lateral' or 'AP'."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-maneuver-maneuver-type"/> + <uri value="http://loinc.org/property/rad-maneuver-maneuver-type"/> + <description value="Maneuver type indicates an action taken with the goal of elucidating or testing a dynamic aspect of the anatomy."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-timing"/> + <uri value="http://loinc.org/property/rad-timing"/> + <description value="The Timing/Existence property used in conjunction with pharmaceutical and maneuver properties. It specifies whether or not the imaging occurs in the presence of the administered pharmaceutical or a maneuver designed to test some dynamic aspect of anatomy or physiology ."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-pharmaceutical-substance-given"/> + <uri value="http://loinc.org/property/rad-pharmaceutical-substance-given"/> + <description value="The Pharmaceutical Substance Given specifies administered contrast agents, radiopharmaceuticals, medications, or other clinically important agents and challenges during the imaging procedure."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-pharmaceutical-route"/> + <uri value="http://loinc.org/property/rad-pharmaceutical-route"/> + <description value="Route specifies the route of administration of the pharmaceutical."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-reason-for-exam"/> + <uri value="http://loinc.org/property/rad-reason-for-exam"/> + <description value="Reason for exam is used to describe a clinical indication or a purpose for the study."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-presence"/> + <uri value="http://loinc.org/property/rad-guidance-for-presence"/> + <description value="Guidance for.Presence indicates when a procedure is guided by imaging."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-approach"/> + <uri value="http://loinc.org/property/rad-guidance-for-approach"/> + <description value="Guidance for.Approach refers to the primary route of access used, such as percutaneous, transcatheter, or transhepatic."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-action"/> + <uri value="http://loinc.org/property/rad-guidance-for-action"/> + <description value="Guidance for.Action indicates the intervention performed, such as biopsy, aspiration, or ablation."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-guidance-for-object"/> + <uri value="http://loinc.org/property/rad-guidance-for-object"/> + <description value="Guidance for.Object specifies the target of the action, such as mass, abscess or cyst."/> + <type value="Coding"/> + </property> + <property> + <code value="rad-subject"/> + <uri value="http://loinc.org/property/rad-subject"/> + <description value="Subject is intended for use when there is a need to distinguish between the patient associated with an imaging study, and the target of the study."/> + <type value="Coding"/> + </property> + + <!-- + Document Ontology properties. + These apply only to terms in the LOINC Document Ontology File + Notes + Properties are specified as type "Coding", which are represented by LOINC Part codes (LP-) and their display names. + The attribute names here use FHIR styled names rather than their original LOINC style names because those contain periods. + --> + + <property> + <code value="document-kind"/> + <uri value="http://loinc.org/property/document-kind"/> + <description value="Characterizes the general structure of the document at a macro level."/> + <type value="Coding"/> + </property> + <property> + <code value="document-role"/> + <uri value="http://loinc.org/property/document-role"/> + <description value="Characterizes the training or professional level of the author of the document, but does not break down to specialty or subspecialty."/> + <type value="Coding"/> + </property> + <property> + <code value="document-setting"/> + <uri value="http://loinc.org/property/document-setting"/> + <description value="Setting is a modest extension of CMS’s coarse definition of care settings, such as outpatient, hospital, etc. Setting is not equivalent to location, which typically has more locally defined meanings."/> + <type value="Coding"/> + </property> + <property> + <code value="document-subject-matter-domain"/> + <uri value="http://loinc.org/property/document-subject-matter-domain"/> + <description value="Characterizes the clinical domain that is the subject of the document. For example, Internal Medicine, Neurology, Physical Therapy, etc."/> + <type value="Coding"/> + </property> + <property> + <code value="document-type-of-service"/> + <uri value="http://loinc.org/property/document-type-of-service"/> + <description value="Characterizes the kind of service or activity provided to/for the patient (or other subject of the service) that is described in the document."/> + <type value="Coding"/> + </property> + + <!-- Answer list related properties --> + <property> + <code value="answers-for"/> + <uri value="http://loinc.org/property/answers-for"/> + <description value="A LOINC Code for which this answer list is used."/> + <type value="Coding"/> + </property> + + <!-- Note for future consideration. These are properties of LA codes in the context of a particular list. Not global properties. + <property> + <code value="sequence"/> + <uri value="http://loinc.org/property/sequence"/> + <description value="Sequence Number of a answer in a set of answers (LA- codes only)"/> + <type value="integer"/> + </property> + <property> + <code value="score"/> + <uri value="http://loinc.org/property/score"/> + <description value="Score assigned to an answer (LA- codes only)"/> + <type value="integer"/> + </property> + --> +</CodeSystem> + + diff --git a/hapi-fhir-validation/src/main/java/org/hl7/fhir/common/hapi/validation/support/ValidationConstants.java b/hapi-fhir-validation/src/main/java/org/hl7/fhir/common/hapi/validation/support/ValidationConstants.java new file mode 100644 index 00000000000..27a3b266f44 --- /dev/null +++ b/hapi-fhir-validation/src/main/java/org/hl7/fhir/common/hapi/validation/support/ValidationConstants.java @@ -0,0 +1,32 @@ +package org.hl7.fhir.common.hapi.validation.support; + +/*- + * #%L + * HAPI FHIR JPA Server + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +public class ValidationConstants { + + public static final String LOINC_LOW = "loinc"; + public static final String LOINC_GENERIC_CODE_SYSTEM_URL = "http://loinc.org"; + public static final String LOINC_GENERIC_VALUESET_URL = LOINC_GENERIC_CODE_SYSTEM_URL + "/vs"; + public static final String LOINC_GENERIC_VALUESET_URL_PLUS_SLASH = LOINC_GENERIC_VALUESET_URL + "/"; + + // not to be instantiated + private ValidationConstants() { } +}